
保护显然
add
大小不能超过0x1000
show

正常
edit

它的输入函数

有个off by null。
free

free函数也正常。
所以说完了就是2.34版本下的一道off by null。
高版本要注意什么
首先是2.32开始对tcache和fastbin的fd指针进行了异或加密,异或的内容其实就是堆地址,所以我们首先必须泄露heap地址。
tcache_entry->next中存放的chunk地址为与自身地址进行异或运算后所得到的值。
2.34开始取消了malloc_hook和free_hook。
我们只能把想法转向IO_FILE。
那么我们来细看
要解决的第一个问题居然是程序跑不了。

问题在哪呢?

他给了个他已经patch过的程序。

IDA也看得出来。
那就把东西都拉进来,然后给他权限。

就可以了。
所以因为在libc2.34的条件下,我们能利用的方式只有house of banana、house of pig。
这个题里面我们用到的是house of banana。
而且house of banana要注意小细节。
我们在使用house of banana的时候主要是劫持_rtld_global结构体中的link_map结构体,但是我们其实在劫持link_map结构体的时候最重要的是劫持它第一个内容,l_addr结构体,所以其实我们完全可以直接劫持l_addr结构体,也完全可以不用劫持link_map
这次用的就是这个手法。
exp
# -*- coding: utf-8 -*-
from pwn import*
context.log_level='debug'
context.arch='amd64'
context.os = "linux"
pc = "./overheap"
context.binary=pc
context.terminal=["gnome-terminal",'-x','sh','-c']
local = 1
if local:
r = process(pc)
elf = ELF(pc)
libc = elf.libc
else:
r = remote

本文介绍了一个在glibc 2.34版本下的Off-by-Null漏洞,并详细讲解了如何通过House of Banana技巧来进行攻击。文章展示了如何利用此漏洞泄露堆地址,劫持_rtld_global结构体中的link_map结构体,最终实现任意代码执行。
最低0.47元/天 解锁文章
1197

被折叠的 条评论
为什么被折叠?



