WriteUp
题目信息
来源:攻防世界
名称:guess_num
分类:Pwn
描述:菜鸡在玩一个猜数字的游戏,但他无论如何都银不了,你能帮助他么
题目链接: https://adworld.xctf.org.cn/challenges/list
解题思路
首先使用DIE对文件进行查壳,发现这是一个无壳的64位ELF文件。
于是直接使用64位IDA对文件进行反汇编,得到伪代码如下:
找到关键代码:
从代码来看,要连续猜中10次正确数字,才能得到flag。
其实观察name(原v7)地址可以发现,它可以覆盖seed种子(name长度为0x20)
所以我们可以先写个c文件,生成10个以srand(0)为基础的随机数。
代码如下:
生成结果如下:
['2','5','4','2','6','2','5','1','4','2']
然后我们可以通过栈溢出漏洞,修改seed的值为0。
最终payload如下:
结果如下:
使用工具
DIE
IDA
Kali
Pwntools(Python插件,请自行下载)
工具链接: https://pan.baidu.com/s/1dzK8gcFjYEvnj_aA0UjBeQ?pwd=ry2d 提取码: ry2d
Flag
cyberpeace{1d38448daa14eb4f23137fb1a07d9534}
总结
通过本次题目学习到:
栈溢出