0%

Easy RM to MP3 Conversion Utility Stack Based Overflows

具体复现见参考1所示就行,主要讲几个需要注意的点。

1.对函数调用如何入栈需要弄清楚,尤其是调用函数和被调用函数栈帧的分布,注意栈的增长方向,我们一般说的栈是指从高地址向低地址这个方向延伸,每一个位置是四个字节PUSH入栈的时候,ESP-4POP出栈的时候,ESP+4

2.因为不安全的函数,导致栈溢出。覆盖的时候是从低地址往高地址(被调用的不安全函数的栈帧往调用函数栈帧)依次覆盖。被调用函数执行完成后返回调用函数,此时ESP应该指向shellcode的开始部分(一般情况是这样,大部分情况shellcode可能被吃掉部分),这也是EIP应该覆盖为JMP ESP的机器码的原因。

3.溢出覆盖的时候,需要注意JMP ESP是否能够指向shellcode,有的时候shellcode的开始可能会被吃掉一部分,最好是调试看一下,可能需要在shellcode前面加一些NOP字符;shellcode编写的时候,会遇到脏字符,需要不断调试,去掉脏字符,其中\x00是默认需要去掉的。

参考:

1.https://www.corelan.be/index.php/2009/07/19/exploit-writing-tutorial-part-1-stack-based-overflows/

2.https://www.cnblogs.com/clover-toeic/p/3755401.html

3.https://www.corelan.be/index.php/2011/07/14/mona-py-the-manual/