堆相关漏洞与利用
主要介绍了堆的一些常见漏洞和利用方法
【plaidctf 2015】PlaidDB
这道题知识点较多,漏洞利用较复杂,利用 off-by-one 漏洞造成 Overlap 来泄露 libc 基地址,并通过 fast bin attack 错位伪造 chunk 劫持 __malloc_hook 为 one_gadget 来 getshell,要求对堆的分配机制较为熟练
Pwntools与exp技巧
想学好 PWN 就必须会用 Pwntools,对 Pwntools 进行了一些总结和归纳,以及编写 exp 所需要的信息搜集方法
堆基础
都说 PWN 的世界分为栈、堆和内核,这篇文章主要介绍了堆这种数据结构的相关概念,作为堆利用的前置基础
格式化字符串漏洞与利用
关于 PWN 中格式化字符串漏洞的一些总结
函数调用栈
简单记录一下函数在调用过程中栈的变化,对于理解 ROP 和程序的执行流程很有帮助
栈迁移
当可溢出的空间不足以让我们构造 ROP 时,可以考虑将栈迁移到别的地方去构造 payload 从而 getshell,或者利用 RBP 实现任意地址的读写,这就是栈迁移
沙箱绕过与ORW
沙箱技术是一种为执行中的程序提供隔离环境的安全机制,但与虚拟机有所区别,在沙箱环境下通常会限制一些系统调用,虽然 ORW 无法获取 shell,但可以实现任意地址读和任意地址写
栈溢出漏洞与ROP
关于 PWN 中栈溢出漏洞的一些总结,包括利用手段 ROP
Bypass安全机制
主要介绍里一些如何 Bypass 一些常见安全机制的方法,例如绕过 Canary、PIE 等等
PLT表和GOT表
Linux 下 PLT 表和 GOT 表的作用和关系
PWN中64位程序的堆栈平衡
在学习 PWN 的栈溢出漏洞 ROP 时遇到 ret2text 类题目,通过构造 payload 进行 system 调用将 "/bin/sh" 作为参数来获取 shell,32 位与 64 位除了传参方式不一样,有时 64 位还需要额外加上一个 ret 地址来 getshell,否则无法打通,这就是堆栈平衡引起的
Linux下的保护机制
对 Linux 下文件保护机制的大致总结
【Asis CTF 2016】b00ks
很经典的一道堆题,利用 off-by-one 漏洞修改指向堆的指针,然后伪造堆块,后续关键在于获得 libc 基地址,可以分别通过 mmap 的特点和 unsorted bin 的特点来计算 libc 偏移,最后劫持 __free_hook 获取 shell
【BUUCTF】hitcontraining_uaf
可以说是堆中的 ret2text,作为堆的入门例题吧,利用 UAF 漏洞篡改被释放的堆块内容为后门函数地址
【BUUCTF】linkctf_2018.7_babypie1
通过栈溢出覆盖 canary 最后一字节 b'\x00' 利用 printf() 将 canary 的余下七字节输出,从而绕过 canary 保护,同时涉及到利用 partial write 进行 PIE 地址随机化的爆破
【BJDCTF 2nd】r2t4
程序存在 Canary 保护,只能使用一次格式化字符串漏洞,但没有开 PIE,溢出也只能刚好覆盖到返回地址,因此想绕过 Canary 构造 ROP 很困难,但可以劫持 __stack_chk_fail 的 GOT 表地址为后门函数的地址
【wustctf 2020】name_your_cat
题目比较简单,但是一种比较少见的 Canary Bypass 方法,通过数组下标越界绕过 Canary 直接修改栈上的返回值
【你想有多PWN】fmt_test2
一个格式化字符串漏洞的例题,包括泄露栈空间的数据、通过栈上的返回地址推算其它函数的真实地址、利用 libc 偏移计算 system 与 "/bin/sh",以及通过 fmtstr_payload 将 printf 的 GOT 表地址修改为 system_plt,需注意 32 位与 64 位的区别
【蓝桥杯 2024】fd
思路是常见的 ROP,但是限制了 system() 的参数,无法使用 "/bin/sh"、"sh"、"cat flag" 之类的操作,但可以通过 system("$0") 实现相同的效果,同时利用 exec 1>&2 重定向绕过 close(1)
【CISCN 2023】烧烤摊儿
第十六届 CISCN 国赛初赛的一道题,难度不算大,主要是利用 scanf 输入的溢出来 get shell,方法很多,赛后根据这道题总结了三种方法:ret2shellcode(mprotect 修改权限)、ORW、ret2syscall
【CISCN 2023】funcanary
第十六届 CISCN 国赛初赛的一道题,整个题都在爆破,主要涉及 fork() 函数的 canary 爆破,以及利用 partial write 对 PIE 的地址爆破
【ISCC 2023】三个愿望
2023 ISCC 的一道 PWN 题,主要考察利用格式化字符串漏洞来绕过金丝雀保护
【CTFwiki】ROP栈溢出漏洞合集
CTFwiki 中的 ROP 题目合集,在《栈溢出漏洞与ROP》中总结的比较详细,这里只是简单实操一下,算是自己做一个入门的 hint 教程吧,在 CTF 题中几乎也经常遇到
【GDOUCTF 2023】Shellcode
2023 GDOUCTF 比赛中一道简单的 pwn 题,虽然是常规的 ret2shellcode,但是 pwntools 生成的 shellcode 超长确实没留意到,长个记性吧
【GDOUCTF 2023】Random
2023 GDOUCTF 比赛中的一道 Pwn 题,考点在于伪随机数绕过和 ORW 沙箱绕过,以及栈上空间不够写入时,使用 jmp rsp 劫持返回地址
【GDOUCTF 2023】真男人下120层
2023 GDOUCTF 比赛中的一道 Pwn 题,比较简单,主要是利用 ctypes 生成伪随机数,循环输入 120 次即可得到 flag
【GDOUCTF 2023】EASY_PWN
2023 GDOUCTF 比赛中一道简单的栈溢出类 pwn 题,虽然前面看起来像是让猜生成的随机数,其实与 flag 的获取关系并不大,不要被迷惑了
【攻防世界】int_overflow
有时候程序输入无法直接溢出,但是可以利用 strcpy 间接进行溢出,同时注意参数的类型 __int8 和 int 还是不一样的
【攻防世界】level2
发现程序中有 /bin/sh,利用 PLT 表找到 system 函数的地址,然后给 system 函数构造参数来执行
欢迎来到我的小站
我是一个喜欢二进制的 CTFer,目前主要学习 PWN 和逆向,一起加油,互勉!
计时小助手
访客信息
知乎热榜
诗文欣赏
文章归档文章标签文章分类随便逛逛
直达评论复制本文地址
昼夜切换本站协议赞助本站关于本站