Pwnable.kr-otp
pwnable.kr-otp,一次性密码验证(one time password)漏洞分析。
题目分析
同样来看看题目描述:
I made a skeleton interface for one time password authentication system.
I guess there are no mistakes.
could you take a look at it?hint : not a race condition. do not bruteforce.
ssh otp@pwnable.kr -p2222 (pw:guest)
题目告诉我们了,这题目用不到爆破和条件竞争的漏洞,是一个一次性密码验证系统,登录系统,下载源码和二进制文件。
源码:
1 |
|
自己尝试GDB去调试了一下,确实就是 urandom 里面读取 8 个字节然后和命令行传参进去比较,我们甚至没有权限等它生成完 password 文件然后去 /tmp
目录下面 cat
来更改输入。
后面也是参考了别人的 wp,发现 Linux 居然有一个命令可以限制 SHELL 创建的文件大小,使用 ulimit -f 0
来限制文件创建的大小只能小于等于 0,由于这个限制无法向文件写入内容,因此读出来的就是 0 了。
题解
先在 shell 当中执行命令 ulimit -f 0
,然后直接运行 ./otp 0
即可,但是 SHELL 无法直接执行,只能用 python
导入 os 之后再运行 ./otp 0
。
flag:Darn... I always forget to check the return value of fclose() :(
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 xia0ji233's blog!