PWN入门第四课(使用return-to-libc绕过栈执行保护)

前面3门入门课程都是各种限定,才能获取shell。今天先解开栈执行保护,意味着直接在栈上执行代码是不可能的了。
大神博客地址:https://sploitfun.wordpress.com/2015/05/08/bypassing-nx-bit-using-return-to-libc/
国内有人把此博客翻译成中文,整理成文档了。这里给出大家链接:
https://legacy.gitbook.com/book/wizardforcel/sploitfun-linux-x86-exp-tut/details

博客大家自己去看,我这里是说下博客中未提到的细节,或者说明下怎么操作。

通过ldd查看基地址:
ldd vuln4
查看vuln4的基地址

通过readelf -s命令查看偏移地址

readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system
查看system的偏移地址
readelf -s /lib/i386-linux-gnu/libc.so.6 | grep exit
PWN入门第四课(使用return-to-libc绕过栈执行保护)_第1张图片
屏幕快照 2018-04-17 下午2.04.15.png

其实通过gdb调试,在main处进行断点,进行调试,然后通过 :

p system

也能获取到。

gdb暴力搜索/bin/bash法:

x/500s $esp

找到了/bin/bash,未找到/bin/sh。


找到/bin/sh

由于SHELL=占据了6个字符,应该还应该加上6.


屏幕快照 2018-04-17 下午8.32.19.png

通过构造寻找/bin/bash方法:

export pwn="/bin/sh"
echo $pwn
./gtenv pwn

使用gdb-peda直接在应用程序中寻找:

find  "/bin/sh"
PWN入门第四课(使用return-to-libc绕过栈执行保护)_第2张图片
寻找/bin/sh

你可能感兴趣的:(PWN入门第四课(使用return-to-libc绕过栈执行保护))