PWN堆溢出unlink利用
HITCON Training lab14 magic heap
不太清楚堆题的流程,还是按照老传统 看保护 跑一遍 ida
可以对heap进行申请编辑和free操作,不知道是不是我只会unlink的原因,我感觉给了这三个基本可以确定能利用unlink了。然后 IDA 在看一下bss段有没有数组存放chunk。
这个也很好找,一般在 malloc时候会有一个数组:
堆溢出
这也是利用unlink的一个要求,至少能溢出一字节。寻找堆溢出漏洞点也很简单,和栈溢出差不多。
输入
gets,直接读取一行,忽略
'\x00'
scanf
vscanf输出
sprintf
字符串
strcpy,字符串复制,遇到
'\x00'
停止
strcat,字符串拼接,遇到'\x00'
停止
bcopy
1 | C |
仔细观察可以发现,这里面的 v3 是自己指定的,并不是edit chunk的大小而是自己输入任意大小的数据,存在溢出点。
思路
程序内还含有一个后门,我们可以想办法去修改 magic 的数值来getshell,也可以直接利用unlink劫持got表自己生成一个shell。
大概流程就是,首先申请两个堆块大小区分开防止unlink,然后利用edit功能伪造一个chunk使 fakechunk 和 第一个free的chunk unlink,返回一个可控地址
TMD!不打了修了一下午bug心态炸了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Shangu's Blog!