本文共 1509 字,大约阅读时间需要 5 分钟。
作为CTF爱好者,我记录了自己的审题思路、解题方法以及常见的技术手法。这些题目涵盖了栈溢出、格式化字符串、整数溢出等多种攻防技术。下面是一些典型的解决方案和经验总结。
nc 工具建立远程连接。pwn 库的 remote 函数建立远程连接。from pwn import *r = remote("220.249.52.133", 35257)r.interactive() 这是最基础的远程交互例子,适合快速验证题目是否存在可利用的漏洞。
注意事项:对于 write 函数,直接使用
r.recv()会导致延迟,需改用r.sendline()。
%x:提取内存中的 16进制 数据,可以用于读取堆或栈信息。%p:获取指针地址,可以用来获取函数地址或堆地址。%s:输出字符串中的指针指向内容,常用于提取 GOT 表信息。%n:通过格式化字符串控制写入目标地址的值。技巧:使用
%$hn、%$hhn等来控制写入的字节长度,避免程序崩溃。
%n 格式化字符串,快速修改程序流程。system 函数在内存中的 Address,结合 PLT/GOT 模块构造 ExploitScript。rand() 函数基于设定的种子生成随机数,但随机性有限。srand() 来设定随机数种子,实现预测随机数。ctypes 模块与 C 函数交互,绕过保护机制。将以上内容组织为清晰的分类目录:
.low ├──栈溢出相关题 │ ├──简单栈溢出 │ ├──后门函数 │ └──整数溢出 ├──格式化字符串漏洞 │ ├──基础知识 │ └──实战案例 └──随机数漏洞 ├──rand函数 └──绕过保护机制
以上总结涵盖了CTF中常见的多种技巧和方法,希望对其他爱好者有所帮助。如果有具体题目需要补充解答欢迎随时沟通!
转载地址:http://lqbqz.baihongyu.com/