-
-
[求助] 关于sploitfun的第四篇心得和一些求助
-
-
[求助] 关于sploitfun的第四篇心得和一些求助
-----》 3月12日结贴
感谢大佬的解答@keoyo
-----》 3月10编辑
我跟踪了strcpy函数
ret = pop eip;
而我的字符串在 0xffffcc90 以后的地址中 ,无论多长也不会覆盖到这个返回地址。
但是问题又出现了,按照栈结构
..
var ..
ret ..
par ..
..
按理来说返回地址(ret)在变量(var)后面,会被我的字符串(var)覆盖掉啊,为什么strcpy中,返回地址在var前了呢??????
_________________________________________________________________________________________________________________________-
本人小白,最近接触了这系列文章 https://sploitfun.wordpress.com/2015/05/08/bypassing-nx-bit-using-return-to-libc/
也在论坛中发现了它的汉化贴 https://bbs.pediy.com/thread-217390.html
写一些自己的心得和收获,首先是原文语法错误问题
conv函数是个小端转换函数,我这显示的是这样。
应该修改为return struct.pack("I",num)
在我的64bit ubuntu上编译它原文程序
1 | echo 0 > / proc / sys / kernel / randomize_va_space
|
关aslr
gcc -m32 -g -fno-stack-protector -o nx nx.c
编译过程
原文没有给出它gdb程序的截图,可能我环境和他不同,反汇编出来的也不同。
按照原文的exploit是失败的
我跟踪了字符串,发现它在执行完main函数时候会跳转到的payload上。
从main+81 到结束,这段代码很奇妙,它读了我的payload,在我的payload中找字符串然后修改程序的ebp,然后从栈上pop eip
为此我针对我的环境构造了ebp,来满足它的跳转,放exploit
在gdb成功exploit了,但是在shell里面却依旧报错,查了查是环境变量不同,放到栈上以后,环境变量所占栈长度不同导致的exploit失败
找到一个工具,github上的 fixenv/r.sh
利用这个工具重新构造payload成功exploit了。。。。
[注意]看雪招聘,专注安全领域的专业人才平台!
最后于 2018-3-12 10:02
被xxxlion编辑
,原因: