首页
社区
课程
招聘
[求助]请教以下程序包含的格式化字符串漏洞如何调试?
发表于: 2017-3-21 16:45 3455

[求助]请教以下程序包含的格式化字符串漏洞如何调试?

2017-3-21 16:45
3455
#include "stdafx.h"
#include <stdio.h> 
#include <stdlib.h> 
#include <windows.h>
int main (int argc, char *argv[]) 
{ 
    printf(argv[1]);
    system("pause");
    return 0;
}

该程序的参数存储在堆中,EAX只能遍历到栈空间的地址,且EAX定位到的返回地址及SEH函数地址均为Read属性,无法修改,请教如何利用?



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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 86
活跃值: (1205)
能力值: ( LV7,RANK:150 )
在线值:
发帖
回帖
粉丝
2
把“pause”替换成外部恶意程序去执行,可以不?
2017-3-21 17:17
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
shuozhang 把“pause”替换成外部恶意程序去执行,可以不?
主要是想利用格式化字符串。
2017-3-21 17:18
0
雪    币: 14
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
思路:首先,找到“pause”字符串的存储地址,编译时应该会把这个字符串放在 .rodata区域? 然后,利用 %n 格式化漏洞把 字符串pause修改为 “/bin/sh”(别忘了后面加一个\0)。然后,执行system("pause")该指令块时,应该就是system("/bin/sh")了
2017-3-23 17:48
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
已解决,通过覆盖EBP进行堆栈互换。
2017-4-11 09:46
0
游客
登录 | 注册 方可回帖
返回
//