首页
社区
课程
招聘
[原创]2018看雪CTF第三题WP
发表于: 2018-6-20 21:27 3114

[原创]2018看雪CTF第三题WP

2018-6-20 21:27
3114

test函数中调用了ptrace

把welcome函数中调用test处nop掉就能用gdb调试了。

从这起,F5大法就不好用了,直接分析汇编

call指令把pop rax的地址压栈,随后又弹入rax中。动态获取当前的地址(还记得罗云彬的汇编书里说这是病毒常用的手段。。。)

syscall为linux的系统调用,rax是功能号。
rdi,rsi,rdx对应着前三个参数。即为syscall(rdi,rsi,rdx)


●syscall调mprotect把text段的读写执行属性都打开。(因为下面要动态解密)
●syscall调read读入6个字节。(后面可知这是6段shellcode解密的xor_key)。
●从下面相邻的代码出开始解密,取输入的第一个字节逐字节异或,当解密后遇到\x90时停止解密,跳入解密完成的代码。

最直接的想法是输出256种可能下的反汇编代码,人工判断是否合理,事实证明可行。

shellcode2先把之前执行过的破坏掉(应该是为了防止我们后面利用这部分代码),然后利用输入的第二个字节异或解密并执行shellcode3。
穷举解密的套路相同,不再赘述。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-6-21 15:56 被mratlatsn编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//