XCTF-pwn-200-WP

Posted on Nov 9, 2020

这是一道很简单的题目,算是无libc的ret2libc,但是有很多我不理解的小细节还需要加强学习。

先检查一下安全措施

发现没有开启canary,可以轻松的进行栈溢出。

然后我们发现这里存在一个明显的栈溢出漏洞。但是并没有在程序中找到system和/bin/sh等后门,所以我们可以考虑通过DynELF工具进行爆破。这道题其实和pwn-100是几乎一样的,但是是32位程序,就不需要使用gadgets了,简单了许多。并且可以帮我们泄露的函数是write,可以指定输出的字节数,所以leak函数也好写了许多。

这里有几个细节。

首先context(log_level = 'debug',arch = 'i386',os = 'linux'),这一句如果不写,就没法拿到shell。也许环境设置对DynELF有影响吧,为了不让终端输出过于混乱,这个我没写,卡了我不少时间。

其次read函数需要通过plt表中的地址调用,但是上一题却需要用got表,并且都是换一下就没法拿shell,不太理解其中的原因,还是因为对链接不慎熟练。