首页
社区
课程
招聘
[求助]格式化字符串
发表于: 2024-12-20 16:51 3711

[求助]格式化字符串

2024-12-20 16:51
3711

图片描述
如图,一道很简单的格式化字符串,a1是输入,snprintf将其导到s里,然后printf(s)
问题是Welcome,是8个字符,%s前刚好有个空格
我一开始构造paylaod为b"aaaaaaa"+p32(0x402008)+b"%10$s"
用7个a先对齐,然后p32(addr),问题就来了,p32会填0,但是snprintf遇到0就直接终止了,导致%10$s没有进到s里
但是如果用b"aaaaaaa"+p8(0x08)+p8(0x20)+p8(0x40)+b"%10$s"
不填0,第10个参数又会多个%,不是00402008,是25402008
貌似由于这个snprintf的存在,我没办法构造参数为00402008,因为遇到0就直接终止了,不知道各位有什么办法


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 84
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
由于main函数是fgets,所以main函数的402008前面既没有讨厌的空格,后面也没有讨厌的感叹号,我使用payload1=b"aaa"+b"%19$p"+p64(0x402008),刚好能输出0x402008,但是换成%19$s后程序又崩溃了,貌似又没有能够正常输出402008处的数据
2025-1-3 13:48
0
游客
登录 | 注册 方可回帖
返回