前面3門入門課程都是各種限定陨亡,才能獲取shell。今天先解開棧執(zhí)行保護(hù)患民,意味著直接在棧上執(zhí)行代碼是不可能的了袱饭。
大神博客地址:https://sploitfun.wordpress.com/2015/05/08/bypassing-nx-bit-using-return-to-libc/
國內(nèi)有人把此博客翻譯成中文,整理成文檔了。這里給出大家鏈接:
https://legacy.gitbook.com/book/wizardforcel/sploitfun-linux-x86-exp-tut/details
博客大家自己去看,我這里是說下博客中未提到的細(xì)節(jié),或者說明下怎么操作荆针。
通過ldd查看基地址:
ldd vuln4
通過readelf -s命令查看偏移地址
readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system
readelf -s /lib/i386-linux-gnu/libc.so.6 | grep exit
其實(shí)通過gdb調(diào)試,在main處進(jìn)行斷點(diǎn),進(jìn)行調(diào)試航背,然后通過 :
p system
也能獲取到喉悴。
gdb暴力搜索/bin/bash法:
x/500s $esp
找到了/bin/bash,未找到/bin/sh玖媚。
由于SHELL=占據(jù)了6個(gè)字符箕肃,應(yīng)該還應(yīng)該加上6.
通過構(gòu)造尋找/bin/bash方法:
export pwn="/bin/sh"
echo $pwn
./gtenv pwn
使用gdb-peda直接在應(yīng)用程序中尋找:
find "/bin/sh"