-
-
[原创]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编辑
,原因:
赞赏
他的文章
看原图
赞赏
雪币:
留言: