首页
社区
课程
招聘
[原创]House Of Force实例
发表于: 2018-4-9 18:37 5576

[原创]House Of Force实例

2018-4-9 18:37
5576

House of Force: 修改top chunksize域,来达到我们任意地址读写的目的.

1. welcome

2. menu

3. new

4. edit

5. delete

漏洞点: 在welcome阶段存在一个内存泄露和复制过量的数据

第一个漏洞点

    分析: 当我们输入0x40字符时, strcpy会将字符和v2地址一同复制到v2指向的空间. 随后会将v2打印出来, 这就是内存泄露.

第二个漏洞点

    分析: 同样当我们输入0x40s中去, strcpy(v2, &s)就会将0x40个字符 + v2地址 + v3内容一同复制进v2,造成复制过多的数据, 这个地方就是修改 top chunk size.

小例子

相关内存:

    结论: top chunk size0x804b020,我们完成可以向s1中输入过量的数据改变top chunk size.

整体思路

    修改top chunk size0xffffffff, malloc一个赋值, 使top chunk分配到.bss段附近.
0x804b120中存放的是content指针, 通过修改这些指针, 达到任意读写目的.

步骤一: 泄露heap地址, 修改top chunk size

步骤二: 修改top chunk的值

步骤三
    思路: 修改原0x804b120处存储的指针, 将free@got修改为print@plt, 泄露atoi函数地址

步骤四: 修改atoi为system函数地址

步骤五: 发送"/bin/sh\x00"

改变top chunk.bss是什么算的?

0x804b0a0 - 8 - (leak + 0x48*3 -8) - 12

    原因: 咱们的目的是为了返回0x804b0a0, top chunk必须为0x804b098, 程序中还会为你申请的空间+4, 还要有8字节的header,所以是减12, 另外的就是单纯的算距离了.

Link1
Link2


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-4-9 18:37 被baolongshou编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 8224
活跃值: (1296)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享,分析得很仔细
2018-4-11 10:17
0
游客
登录 | 注册 方可回帖
返回
//