PWN——[第五空间2019 决赛]PWN5

前言

网传题解是通过printf的%08x,依次dump出栈中内容,再与传入内容进行比较,以此确定传入内容在栈中的位置。

实际上,IDA是个十分强大的工具,可以通过IDA静态分析出位置

实战

PWN——[第五空间2019 决赛]PWN5_第1张图片

buf长100字节,位于esp+20

双击buf进入栈视图

PWN——[第五空间2019 决赛]PWN5_第2张图片

发现写入的数据处于栈的第10位

再去查看要写入的数据

双击进入bss段,发现要写入的数据是DWORD,也就是4字节

四字节正好使用%n (hn是写入两字节,hhn是写入一字节,lln是写入八字节)

PWN——[第五空间2019 决赛]PWN5_第3张图片

再根据%$n特性,即可构造出payload

PWN——[第五空间2019 决赛]PWN5_第4张图片

bss=0x0804c044
payload=p32(bss)+b'%10$n'
p.sendline(payload)
p.sendline(b'4') #因为p32是四个字符

注意

%5$n=%x%x%x%x%n

后续

还在别人的博客发现了新的方法,等下次有时间更新

你可能感兴趣的:(pwn,青少年编程)