Kesselring的文章: House_of_apple_2
前排提要:本篇笔记并非追求原理以及理解,适合打算速成学习的基础薄弱的师傅们直接学习。借用AttackingLin师傅的省流总结如下,本文以2025年轩辕杯的ez_heap来对其进行粗略的分析。 对fp的设置如下:#_flags设置为~(2 | 0x8 | 0x800),如果不需要控制rdi,设置为0即可;如果需要获得shell,可设置为 sh;,注意前面有两个空格#vtable设置为_IO_wfile_jumps/_IO_wfile_jumps_mmap/_IO_wfile_jumps_maybe_mmap地址(加减偏移),使其能成功调用_IO_wfile_overflow即可#_wide_data设置为可控堆地址A,即满足*(fp + 0xa0) = A#_wide_data->_IO_write_base设置为0,即满足*(A + 0x18) = 0#_wide_data->_IO_buf_base设置为0,即满足*(A + 0x30) = 0#_wide_data->_wide_vtable设置为可控堆地址B,即满足*(A + 0xe0) =...
ISCC2025校级赛 PWN 题解
0x00 前言小弟的第一次ISCC,校赛阶段已经结束了,简单记录一下做的PWN(3/3),平台比想象中的要烂好多好多…很难想象这是一个国家级的比赛。还有各种PY满天飞,甚至有老哥看到同校的PY队直接在比赛群里骂了起来,这就是_______. 0x01 题解部分签checksec: Arch: i386-32-littleRELRO: Full RELROStack: Canary foundNX: NX enabledPIE: No PIE (0x8047000)RUNPATH: b'/home/yyh/Desktop/lib32/lib32/'Stripped: No 浅谈附件一发下来就是patch(?)过的,很奇怪,甚至不能直接打开,我当时尝试过给他patch了一个比较低版本的libc和so(2.23),启动之后会报一个这样的错误: version GLIBC_2.34 not...
Unl1nk
0x00 前言:堆学习之路还在继续,上周末打了ACTF,被几道Pwn题吓死了,上来就是IO、内核。唉,所以还是继续慢慢往上爬吧,希望总有一天能解出XCTF联赛的Pwn题 0x01 分析:一道用来熟悉 unlink 的题目,题目是来自[PolarD&N].(https://polarctf.com/#/page/challenges)的**easyhay**。Checksec 一下: Arch: amd64-64-littleRELRO: Partial RELROStack: Canary foundNX: NX enabledPIE: No PIE (0x3ff000)RUNPATH: b'/home/link/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/'Stripped: No Patch 过了,值得注意的是没开 pie,这对我们 unlink 攻击起到了关键的作用,ida 启动 以为是unosrted bin...
UCSC CTF 2025高校网络安全联合选拔赛 PWN 题解
0x00 前言:kap0k 23级的第二场获奖的团队赛,最终只贡献了2道PWN,还是靠RE队友带飞了。最后一题堆题的复现拖了很久,总体来说不是什么难题,从这题开始稍微了解了一些unsorted bin的机制和off by one的攻击原理。做出来的两题都是比较简单的,所以可能写得有点粗糙,但最后一题堆题绝对写的很详细! 0x01 题解部分:BoFido-ucscchecksec一下: Arch: amd64-64-littleRELRO: Partial RELROStack: No canary foundNX: NX enabledPIE: No PIE (0x400000)SHSTK: EnabledIBT: EnabledStripped: No Ida就是一个简单的猜随机数。该随机数的生成依赖于种子,也就是说,如果种子一样,生成的随机数序列就一样。使用srand()函数来设定与题目相同的随机数种子,即可做到猜测随机数的效果 from pwn import *from ctypes...
House of Orange
0x00 前言:堆学习之路仍在继续,这次依旧是PolarD&NCTF上的一道堆题,名字是easy_exit,其实House of Orange挺模板的,这里只是简单过一遍,让自己大概理解一下这个模板是怎么运作的。House of Orange本身并不难理解,难理解的是后面的FSOP… 0x01 分析:Checksec 一下: Arch: amd64-64-littleRELRO: Full RELROStack: No canary foundNX: NX enabledPIE: PIE enabledRUNPATH: b'/home/link/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/'Stripped: No Ida 启动程序还是很简单的,可以申请两次自定义大小的堆块,然后可以多次申请 0x1000 大小的堆。主要是没有 free 功能,没法正常泄露 libc。这就要用到 house 系列中的 house of orange...
TGCTF2025 PWN 部分题解
0x00 前言杭师大的新生赛,pwn只做了5/10题,我觉得挺难的题目都被师傅们打成最低分了😭,堆题还是没能做出来,希望可以早日破零但是这次也学到不少东西了,例如容错比较高的泄露libc的方法、free掉伪造的chunk时需要注意的细节之类的,再加油吧还有还有,这是我加入kap0k之后第一次获奖的团队赛捏,还是很开心的看看排名啦,最后拿到了小小三等奖。省赛和ISCC要加油 0x01 题解部分1.签到check一下ida启动:有个gets可以溢出,程序中没有binsh和system,所以要打ret2libc from pwn import *from ctypes import *from struct import packcontext.arch='amd64'context.os = 'linux'context.log_level =...
glibc-all-in-one 下载后 Failed to download package 怎么办
0x00 起因在做 LitCTF 2024 heap-2.27 的时候,由于这个题是一个堆题,题目给了 libc 文件,打算先通过 glibc-all-in-one 得到对应的 ld 文件。 1strings libc-2.27.so | grep 'ubuntu' 对应 glibc 版本为:2.27-3ubuntu1.6_amd64 0x01 下载失败但是当我正想输入 1./download 2.27-3ubuntu1.6_amd64 来下载时,得到的结果却是: 1234Getting 2.27-3ubuntu1.6_amd64-> Location:https://mirror.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/glibc/libc6_2.27-3ubuntu1.6.deb-> Downloading libc binary packageFailed to download package from...
LitCTF 2024 heap-2.27(Tcache attack啦)
0x00 前言初见Tcache,好像没有想象中的难,所以这篇文章篇幅不太长,属于随便写写吧。吐槽:这个甚至有点简单 0x01 速通思路主要是一个 unsorted bin 来泄露 libc 基地址,然后利用 Tcache 来 malloc 任意地址,通过编辑堆这个功能组合成任意地址写,将 free_hook 写成 system, 然后 free 一个内容为 binsh 的堆 0x02 前置准备题目给了 libc 文件,可以通过: 1strings libc-2.27.so | grep 'ubuntu' 来找到合适的 libc 版本。版本为:2.27-3ubuntu1.6_amd64。patch 一下然后正式开始 0x03 分析一下越来越懒了,现在打堆题都懒得 checksec 了:很多保护,但是不要紧,先看看 ida:经典菜单堆,大致看了一下,有 uaf:没有堆溢出啦,但是 2.27 中加入了 Tcache 一机制,Tcache 可以理解成没有大小的 fast bin。大致看一眼 CTFWIKI Tcache attack...
当无脑将__malloc_hook覆盖成one_gadget但所有one_gadget都打不通的时候该怎么做
0x01 前言做到这题的时候想到一个严重的问题,这种菜单堆题以前我都是怎么做的呢?都是通过堆溢出/uaf 在 __malloc_hook 附近伪造一个 fake chunk 然后将其申请下来,再通过堆编辑来将原本的 __malloc_hook 覆盖成 one_gadget。尝试运行一遍打不通,就换一个 one_gadget,但是其实我没有想过为什么会打不通以及当所有 one_gadget 都打不通的时候怎么办? 0x02 如何解决? 学到了一个新的手段,我们可以利用 realloc 来调整栈帧,在网络上搜索到了一篇博客,大佬详细解释了我上面的问题以及如何解决,现在用一道会有这种情况的题目来实际操作一下,题目是PolarCTF2023秋季个人挑战赛的Emo_chunk 0x03 分析:Checksec:Patch 过了,顺便吐槽一下这个靶场好多堆题都不给 libc 版本,但是看官方解说视频又不说为什么用他那个版本,看到视频里用的是 libc.2.23 就用 2.23 来 patch 了。上 ida:典型菜单堆题,而且有 shell 函数:但是我一开始没有看到,用了...
小萌新的第一次堆溢出+fast bins attack
0x01 前言:题型是一个利用堆溢出来实现Fastbin Attack的题啊,十分适合入门理解,孩子啃得很香。原题目是PolarCTF2025春季个人挑战赛的bll_ezheap1,一道入门堆题。记得堆题上来就要patch!版本之间会有些莫名其妙的差异,很多情况下会导致你本地打不通。 0x02 patch 一下:貌似小版本之间的区别是没有的,这里因为找不到太过远古的ubuntu16的版本,就选择了ubuntu16.04,在glibc-all-in-one中可以找到: 2.23-0ubuntu11.3_amd64 题目没给怎么办?总有方法泄露的 1234ldd pwn2linux-vdso.so.10x00007ffce117c000libc.so.6 => /home/liiinkle/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/libc.so.60x00007f592fc00000...