题目描述:
Can you read the flag?
nc 136.243.194.62 1024
本题是2015年32C3CTF比赛中一道300分的pwn题目,也是我第一次在赛后看着writeup做出的pwn题目,希望下次能够在赛中做出pwn题目。话说,忙碌的工作和生活之余,学习一点安全分析的知识,也是很快乐的一件事情!
我这里所用的工具包括:IDAx64、kali2.0下的edb。
注:整个解题过程参考了多篇writeup,并非完全原创,但每一步都经过实际测试,特此说明。如有错误,请留言指出,不胜感激。
观察文件的基本情况,说明是linux下的x64程序。远程连接后可知(本地运行也可),可以输入两个字符串,分别是用户名(设为user)和红框处的内容(设为str)。
当我们在用户名处输入超长字符串时,会爆出
“* stack smashing detected ”:./readme.bin terminate
由于二进制可执行程序默认的第一个参数argv[0]就是程序自身的名字,说明该题测试的是通过栈溢出的方法,将flag以报错的方式显示出来,也即如下形式。
“* stack smashing detected ”:flag terminate
(当然,这个结论也是我事后通过阅读wirteup