[BUUCTF]PWN5——ciscn_2019_n_1
题目网址:https://buuoj.cn/challenges#ciscn_2019_n_1
步骤:
例行检查,64位,开启了nx保护
nc一下看看输入点的字符串,看运行结果猜测是一个猜数的程序,而且需要我们猜的数应该是11.28125
输入11.28125,发现还是不对
用64位ida打开,首先shift+f12查看程序里的字符串,发现了 “ cat /flag ”
双击跟进,ctrl+x找到调用这个字符串的函数
我们可以看到第10行的if判断,要v2=11.28125才会输出flag,但是第九行的gets是给v1输入,双击v1和v2,查看一下两个变量的地址
可以看到两个参数直接的距离是-0x4-(-0x30)=0x2c,就是说我们写入v1数据时候时候在写入0x2c个字节之后在写入11.28125,这样就可以让v2=11.28125了
写一个简单的十进制转内存中的十六进制
细心点的话可以发现程序里面也有11.28125的在内存中16进制的表示
exp
from pwn import*
r=remote('node3.buuoj.cn',25815)
payload='a'*0x2c+p64(0x41348000)
r.sendline(payload)
r.interactive()