ctf

by fangdada

fangdada /ctf

持续更新,CTF题目收集+如何入门CTF

140 Stars 15 Forks Last release: Not found 345 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

How2pwn

Author: Wenhuo

- github仅作为仓库使用,个人新博客已迁移至:https://fandazh.cn 。老域名已关闭网站,CTF系列可能不会再更新了,现在主要更新how2CVE。

    我个人做过的CTF的bin题收集,有逆向和pwn两个方向。最近主要研究pwn,初学pwn的人建议移步先看看我写的malloc原理解析,我博客里也有而且博客里至少比github好看2333,下面的题目重复的话说明都涉及了,而且题目放上去的不按难度顺序,所以自行看看难度做吧,题目目录下有个文件夹how2pwn,这里面都是讲解要做出这道题目的前置知识以及相应的demo实现,也就是推荐新手先看的(不是全都有,只有最近复现的题目有,嘻嘻),这样学起来应该比现在清晰一些。那么导航就放在下面了:

ret2dlresolve

目前栈题比起以前少很多了,ret2dlresolve基本可以说是栈题的巅峰了,这一技巧虽然刚开始理解起来难一些,但是一次掌握之后再做就很简单了;

fastbin

同一组大小的fastbin被free后由fd指针指向前一个freed的chunk,伪造fastbin要注意绕过size check,e.g. 0x70大小的堆块,伪造的size要在0x70-0x7f的区间里。

largebin

largebin attach相比smallbin多拥有fdnextsize和bknextsize,并且largebin可以用mallocconsolidate吞并fastbin块,利用mallocconsolidate经常可以在只能申请fastbin的情况下生成smallbin来leak地址libc_base。

tcache

最近tcache机制的pwn题越来越多,因此必须得明白tcache机制与往常glibc2.23等版本的不同处,tcache的安全检查特别少,因此这类题的难点通常就在如何leak出libc基址以及如何创建重叠堆块。

unsafe unlink

对刚学堆利用的bin手来说这通常是第一课,目前只放这一题,后续还有largebin下的unlink实现

IOFILE

首先请移步至对_IO_FILE的详细分析文章,PWN中攻击_IO_FILE的题通常都是综合unsortedbin attack修改_IO_list_all,利用其_chain指向可控地址进而篡改vtable来劫持流程的,或者攻击_IO_FILE结构的成员以扩大输出范围达到内存泄漏的目的。

how2kernel

点这里跳转


How2reverse

    终于终于,我终于更新how2reverse了23333,鸽了好久,前一阵子太忙,然后又学习Linux kernel和angr框架,后来出了莫名其妙的问题后卡住了,没事做就来更新下这个。好了废话说完了,来看看how2reverse主要讲什么:

动态调试

我始终认为动态调试是一个逆向分析师必须要熟练掌握的技巧,无论是CTF题还是真实对抗环境,都要能利用动态调试见招拆招找到自己想要的。建议工具:IDA远程调试,GDB+插件(例如peda,pwndbg皆可)。

Z3-Solver

利用符号变量约束器求解唯一解在CTF中也是一种解法,到如今这成为了CTFer必须掌握的一个技巧。与爆破类似,必须知道程序的逻辑,例如加密算法,之后利用python的z3模块编写脚本约束求解。

静态分析

只需要静态分析的题常常花样特别多,除去偶尔的逆向pyc和mips或是直接一个log文件,爆破题和加密题常是静态分析题,我个人喜欢配合GDB验证自己还原的算法是否出错。

爆破

爆破常用与一些加密题,例如爆破hash算法。这一类题通常需要还原算法,若爆破时间过长应注意一下是否是自己的脚本问题或是解题思路。

脱壳

壳分为压缩壳与加密壳,在Windows下加密壳比Linux下的加密壳多,但CTF中大多都是压缩壳,无论是使用脱壳机还是手动脱壳都十分简单,在这里我都用手动的方式脱壳。

待续

…...

  • ...


How2CVE

  趁着有空闲时间,在这里做一下CVE的复现,路线就从栈到堆最后到内核吧,如果有POC的文件格式是公开的话可能还会尝试用fuzzer再复现一遍。好接下来就一步一步慢慢来:

栈溢出漏洞主要在信息安全早期横行,但在现在已经很少能看到新鲜的栈溢出漏洞了,但这不妨碍栈溢出成为学习漏洞利用的第一课。

  • ...

内核

  • ...

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.