AFL++环境搭建与模糊测试
涉及到 AFL++ 的环境搭建和一些基础的 Fuzz 操作,算作是使用 Fuzz 进行漏洞挖掘的入门吧,CTF 通常是单个程序因此不常使用 Fuzz,但是在现实的大项目中 Fuzz 是很好用的利器
U盘重装系统以及Ubuntu与Windows双系统
由于近期跑实验需要 Linux 环境,在服务器上配环境改代码又很不方便,毕竟不止我一个人在用,虚拟机配置 CUDA 始终没有好的办法解决,因此只能考虑双系统了,顺便记录一下所有重装系统相关的操作吧,分享给小白选手
多架构与交叉编译
主要介绍了 ARM、MIPS 等架构的相关基础,以及如何查看系统的架构、如何在 x86 的物理机上搭建 ARM 和 MIPS 等架构的交叉编译环境,这些也是作为 IoT 漏洞分析中的基础技能
IoT固件仿真与gdbserver远程调试
主要涉及到如何对 IoT 固件进行仿真,如果我们没有真实的设备,可以使用 QEMU 或者 GNS3 对固件进行模拟,确保启动我们需要的服务,最后编译并使用 gdbserver 进行 IoT 设备的远程调试
CNVD-2013-11625复现
这是第一篇 CVE 复现文章,关于 DIR-815 等路由器的栈溢出漏洞,需要用到 MIPS 架构的 ROP,收获不少,同时也解决了 winmt 大佬的 PoC 无法 getshell 的问题,很适合作为 CVE 复现入门
IoT环境搭建与固件分析
主要涉及搭建和分析 IoT 固件的环境,这是分析和挖掘 IoT 漏洞的前置基础,同时举例说明了加密固件的几种场景及其处理方法,也包含了很多坑点的说明和解决
【plaidctf 2015】PlaidDB
这道题知识点较多,漏洞利用较复杂,利用 off-by-one 漏洞造成 Overlap 来泄露 libc 基地址,并通过 fast bin attack 错位伪造 chunk 劫持 __malloc_hook 为 one_gadget 来 getshell,要求对堆的分配机制较为熟练
【Asis CTF 2016】b00ks
很经典的一道堆题,利用 off-by-one 漏洞修改指向堆的指针,然后伪造堆块,后续关键在于获得 libc 基地址,可以分别通过 mmap 的特点和 unsorted bin 的特点来计算 libc 偏移,最后劫持 __free_hook 获取 shell
堆相关漏洞与利用
主要介绍了堆的一些常见漏洞和利用方法
Android逆向与动态调试
总结一下安卓逆向中的一些知识点,包括如何静态分析安卓程序,以及如何使用 IDA 来动态调试安卓程序的 so 文件
【BUUCTF】hitcontraining_uaf
可以说是堆中的 ret2text,作为堆的入门例题吧,利用 UAF 漏洞篡改被释放的堆块内容为后门函数地址
堆基础
都说 PWN 的世界分为栈、堆和内核,这篇文章主要介绍了堆这种数据结构的相关概念,作为堆利用的前置基础
【wustctf 2020】name_your_cat
题目比较简单,但是一种比较少见的 Canary Bypass 方法,通过数组下标越界绕过 Canary 直接修改栈上的返回值
【Star Ctf 2018】babystack
通过修改 TLS 结构体中的 stack_guard 变量来控制 Canary,前提是溢出空间足够长并且存在子线程,但是这个题成功构造 system("/bin/sh") 却无法 getshell,必须使用 execve("/bin/sh", 0, 0)
【BJDCTF 2nd】r2t4
程序存在 Canary 保护,只能使用一次格式化字符串漏洞,但没有开 PIE,溢出也只能刚好覆盖到返回地址,因此想绕过 Canary 构造 ROP 很困难,但可以劫持 __stack_chk_fail 的 GOT 表地址为后门函数的地址
【华为杯 2023】ez_ssp
利用 SSP Leak 绕过 Canary,通过修改 __fortify_fail 函数中要输出的变量 __libc_argv[0] 的地址,故意触发 Canary 保护来实现任意地址读
沙箱绕过与ORW
沙箱技术是一种为执行中的程序提供隔离环境的安全机制,但与虚拟机有所区别,在沙箱环境下通常会限制一些系统调用,虽然 ORW 无法获取 shell,但可以实现任意地址读和任意地址写
Bypass安全机制
主要介绍里一些如何 Bypass 一些常见安全机制的方法,例如绕过 Canary、PIE 等等
【蓝桥杯 2024】fd
思路是常见的 ROP,但是限制了 system() 的参数,无法使用 "/bin/sh"、"sh"、"cat flag" 之类的操作,但可以通过 system("$0") 实现相同的效果,同时利用 exec 1>&2 重定向绕过 close(1)
【你想有多PWN】fmt_test2
一个格式化字符串漏洞的例题,包括泄露栈空间的数据、通过栈上的返回地址推算其它函数的真实地址、利用 libc 偏移计算 system 与 "/bin/sh",以及通过 fmtstr_payload 将 printf 的 GOT 表地址修改为 system_plt,需注意 32 位与 64 位的区别
明文攻击
针对未知密码的加密压缩包,如果可以获得压缩包中的一个文件的原件(文件大小要大于 12 Byte),就可以在不需要知道解压密码的情况下,通过这个原件还原出压缩包中的所有内容
流量分析
CTF 杂项中流量分析相关的知识积累
函数调用栈
简单记录一下函数在调用过程中栈的变化,对于理解 ROP 和程序的执行流程很有帮助
PWN中Glibc导致的偏移地址问题
对于程序中没有 system 函数与 "/bin/sh" 的情况,我们通常需要使用到 libc,通过计算 libc 偏移来获取 system 函数与 "/bin/sh" 的地址,但是有时会发现同样的 exp 为什么无法 getshell?因为 libc 版本不一致,导致计算出来的偏移是错误的
PWN中Glibc引起的64位程序的堆栈平衡
在学习 PWN 的栈溢出漏洞 ROP 时遇到 ret2text 类题目,通过构造 payload 进行 system 调用将 "/bin/sh" 作为参数来获取 shell,32 位与 64 位除了传参方式不一样,有时 64 位还需要额外加上一个 ret 地址来 getshell,否则无法打通,这就是堆栈平衡引起的
Ubuntu16.04虚拟机环境搭建
由于 Ubuntu 16.04 环境比较老,导致 2023 年 Ubuntu 22.04 下的许多 PWN 环境搭建并不适用于 16.04,所以出了一个专门针对 16.04 的环境配置教程,并对与 22.04 中不同的地方专门做了讲解和处理
栈迁移
当可溢出的空间不足以让我们构造 ROP 时,可以考虑将栈迁移到别的地方去构造 payload 从而 getshell,或者利用 RBP 实现任意地址的读写,这就是栈迁移
【HDCTF 2023】KEEP ON
存在格式化字符串漏洞,考察的是栈迁移,payload 可写入的数据长度不够,但是也可以利用格式化字符串漏洞劫持 printf_got,使用 fmtstr_payload 替换 printf_got 为 system_plt
记录一些VM虚拟机磁盘压缩回收与拆分合并
一些关于 VMware Workstation 虚拟机磁盘的操作,如磁盘压缩、拆分、合并和导出等,可以减少物理机空间浪费,以及缓解强迫症。。。
汇编指令系统
《第五章》主要记录汇编语言中一些指令的意义以及使用方法,包括部分指令需要注意的一些特点等
avatar
🎓毕业快乐!
uf4te
天道酬勤,保持热爱,奔赴山海
给我的网站一个star 🤗
欢迎来到我的小站
我是一个喜欢学习 PWN 和逆向的二进制 CTFer,加油,互勉!
计时小助手
最新公告
可以在《互动 -> 我的说说》下查看本站的更新及动态:我的说说
访客信息
网站线路
--- 主线路 ---
www.uf4te.cn | uf4te.cn
--- 备用线路 ---
blog.uf4te.cn
uf4te.github.io
--- 本站APP下载 ---
Android | Windows
Mac | Linux
文件 MD5 校验
知乎热榜
诗文欣赏
文章归档文章标签文章分类随便逛逛
直达评论复制本文地址
昼夜切换本站协议关于本站赞助本站