WriteUp:QCTF Xman-dice_game
题目描述
QCTF 的 Xman-dice_gmae 题目。
题目本体见这里。
题目逻辑很简单,就是猜骰子点数,一共五十次。
定位溢出点
拖进 IDA 一看溢出点简直就像是故意构造的一样
buf 长度最长为 0x50 但是当输入大于 49 的时候不会被截断,所以我们只要覆盖到之前的 seed 就可以为所欲为了。
同时注意到 seed 跟 buf 相差的偏移是 0x40,所以只要 68 个字符就可以溢出覆盖 seed 了。
Exploit
由于担心 python 的 randint 实现跟 libc 的不太一样,所以我写了个小程序
1 |
|
然后根据这个程序的输出构造 Exploit 脚本
1 | from pwn import * |
后记
实际上只要算准时间理论上不用覆盖 seed 也能 exploit,就是稍微费点功夫罢了。