首页 > 其他 > 详细

攻防世界-NoLeak

时间:2021-04-09 16:25:17      阅读:20      评论:0      收藏:0      [点我收藏+]

本文全为对其他大佬WP的个人理解

1.查看保护机制

技术分享图片

 

 可以看到NX保护是没有开启的,所以主要围绕堆栈执行来布局shellcode。

2.ida分析

技术分享图片

 

 通过ida的分析,可以明显的看到有堆溢出的漏洞,并且题目是没有输出的功能,就很符合题目的名字NoLeak。

3.首先申请2个chunck(chunck_0,chunck_1)再通过堆溢出,把堆布局成以下的样子。方便下一步进行unlink的操作

技术分享图片

4.在delete了chunck_1后,伪造的fake_free_chunck会和chunck_1合并被free掉。此时堆和存放堆指针的buf[]数组如下

技术分享图片

 

 此时fake_chunck是和chunck_1合并被free掉,并且通过unlink操作buf[0]的值变成了buf[-3]的地址。

5.然后通过edit(chunck_0)操作,在buf[]中伪造chunck。此时edit(chunck_0),就是往buf[-3]处写入数据,因为buf[0]的值已经变成了buf[-3]的地址。

技术分享图片

 

 6.然后连续申请两块大小为0x100的chunck(chunck_2,chunck_3)

技术分享图片

 

 6.再free掉chunck_2。

技术分享图片

 

 7.然后通过edit(chunck_2),实现unsortedbin attack。

技术分享图片

 

 8.当再次申请回同样大小的chunck时,会往(0x601060+0x10)处写入main_arena+88的地址。

技术分享图片

 

 9.通过edit(chunck_1),把main_arena+88的地址改为__malloc_hook的地址。

技术分享图片

 

 10.通过edit(chunck_0),往bss区写入shellcode。

技术分享图片

 

 11.最后通过edit(6),修改__malloc_hook指向为shellcode的地址。此处edit(6)能够执行时因为buf[6]处数据不为0,认为是有这块chunck,但实际上我们没有申请这个chunck。

技术分享图片

 

 12.调用malloc函数会执行shellcode。

攻防世界-NoLeak

原文:https://www.cnblogs.com/mio-yy/p/14631860.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!