house of einherjar house of einherjar这个利用手段可以将 top chunk 移动到任意内存,然后通过分配的内存取得对任意内存读写的权限。 利用条件: 可以修改 top chunk 相邻 chunk 的 size 域低字节(通常是 off by one ) 需要泄漏堆地址、目标 fake_chunk 地址用于计算 prev_size 利用方法: 修改物理相邻 top chunk 的 chunk 2021-06-27 CTF PWN heap one_gadget off_by_one einherjar
gkctf KillerAid 挂科CTF KillerAid题目下载: KillerAid.zip C# 逆向,DLL做核心验证,DLL 里面有反调试,简单 patch 即可 然后有一个极其恶心的 AES 魔改算法 行移位 123456789101112131415161718192021222324252627282930void myshift(int pArray[4][4]){ int tmpArr[4 2021-06-26 CTF Reverse AES AntiDebug
poison null byte poison null byteoff by null 改小已经释放的 chunk 的 size 域,而该 chunk 的物理下一个 chunk 的 prev_size 域没有被修改。 当前 chunk 的 size 域被改小,意味着定位下一个 chunk 会出问题,无法正确修改原来物理相邻 chunk 的 prev_size 域,释放原来物理相邻 chunk ,利用合并机制产生堆叠。 如图 2021-06-23 CTF PWN heap overlap poison_null_byte off_by_null
强网杯: unicorn_like_a_pro 强网杯: unicorn_like_a_prounicorn framework 是一个基于 qemu 的模拟执行框架 GitHub链接: https://github.com/unicorn-engine/unicorn 这道题目内部就调用了 unicorn 框架模拟执行一段 x64代码,最开始以为出题人魔改了 unicorn 框架,用 bindiff 分析了一段时间,发现并没有魔改 unico 2021-06-14 CTF Reverse Capstone Unicorn Keystone Recompile
Unlink 与 fastbin dup consolidate 利用 Unlink 与 fastbin dup consolidate 利用malloc 在分配 large chunk 的时候,会调用 malloc_consolidate 函数。 malloc_consolidate 函数将 fastbin 中的 chunk 与相邻 free chunk 合并,合并后放入 unsorted bin。 若 chunk 的 next chunk 不是 free chun 2021-06-11 CTF PWN heap fastbin unlink fastbin_dup_consolidate
unlink Unlink 攻击Unlink 也是一种很常见的堆溢出利用手段 我认为 unlink 攻击的本质是利用 free 中 unlink 操作修改指向堆块的指针变量 p,使其指向 p-3 处,修改 p[3] 即可修改 p 自身,从而达到任意地址读写的能力。 利用条件: 指针变量 p 指向堆分配的地址,且对该地址可读可写 p 指向的 chunk 的前一个 chunk 可溢出到下一个 chunk 的 si 2021-06-11 CTF PWN heap unlink
house of spirit house of spirit这种利用方式主要是在栈上构造 fake chunk,从而更好的控制栈,修改返回地址。 利用条件: free(p) 中的 p 可控 可以泄漏栈地址 不可控区域前后都有区域可控(如图) 利用思路: 在栈中构造 fake chunk,大小覆盖掉函数的返回地址,再次分配得到返回地址控制,写入 one_gadget 或者 shellcode 地址。 注意如果构造 fa 2021-06-10 CTF PWN heap fastbin house_of_spirit shellcode
0cft2017 babyheap 0ctf2017 babyheap复现了一道非常经典简单的堆题 分两步: 泄漏 libc 地址 fastbin attack 修改 _malloc_hook 有一个堆溢出洞,写内存时没有做长度限制。观察一下,虽然开启了地址随机化,但是 Chunk 地址的最后一字节总是固定的,这意味着修改低位字节能在不泄漏地址的情况下指向其它 chunk。 可以构造两个 fastbin 中的 chunk1 和 2021-06-10 CTF PWN heap fastbin one_gadget overlap
Redhat-filestore 红帽杯2021 file_store题目下载: file_store.zip 做这道题之前可以先学习一下 Huffman 编码,同时这道题还涉及到大量的 stl 使用,可以锻炼 stl 逆向分析能力。Huffman 一般用于数据压缩,与题目名比较吻合。这道题其实是利用 Huffman 编码对 flag 文件进行编码,解题方法是解压 Huffman 编码过的文件即可。 这道题压缩方案是利用传统 Hu 2021-05-28 CTF Reverse Huffman STL
AVL Tree AVL 平衡二叉树AVL 平衡二叉树在 BST 的基础上要求左右两子树的高度差不超过 1 插入新的元素可能影响树的平衡性,为了使插入元素后的树继续满足 AVL 性质,要对树进行一些调整。 插入新的元素后,有四种情况,分别为 LL, LR,RR,RL 调整的方法是对最小不满足AVL性质的子树进行旋转操作。 左旋和右旋 123456789101112T1, T2 and T3 are subtrees 2021-05-26 DataStruct AVL