摘要:
第三届华为杯“XMan”冬令营 format: 这题的知识点是格式化字符串漏洞,不同于以前的题目,这题的format是直接写载堆上的,所以我们没法布置地址达到直接修改程序返回地址的目的。不过这题子函数调用的非常多,而且是层层调用,这就让修改子程序栈空间控制执行流成为可能。 拿其中一次调试的程序栈空间 阅读全文
摘要:
Recho: 这种类型的题目我也是第一次碰见,故记录一些知识点。这题我碰到3个比较难受的坑: 不知道怎么结束while循环。我原本的想法是输入一些特殊的字符迫使它读入的字符数为0,结果怎么试发现都能正常读入。不得以去网上看了一下别人的博客,发现pwntools居然有p.shutdown('send' 阅读全文
摘要:
题外:这道题不是很难,但是却难住了我很久。主要是在IDA中查看反编译出的伪代码时双击了一下gets()函数,结果进入gets函数内部,我当时就懵了,误以为这是一个自定义函数,但是自定义函数应该应该不能与已有的库函数同名啊。虽然有此疑问,我没有深究,而是老老实实分析反汇编出来的伪代码,结果发现函数层层 阅读全文
摘要:
刷题平台: https://www.bugku.com/thread-7-1-1.html 资料: https://www.cnblogs.com/christychang/p/6032532.html https://www.cnblogs.com/CoBrAMG/p/9294010.html h 阅读全文
摘要:
条件控制伪指令: 格式: .if 条件表达式 ;条件为真执行分支体 分支体 .elseif 条件表达式 ;条件为真执行分支体 分支体 .else 分支体 .endif 注意: 条件表达式中操作符 ! 优先级最高,其次是 ==,!=, >, >= ,<, <=这些比较运算符,&&和 || 优先级最低, 阅读全文
摘要:
记录几个非常有用但是自己又不熟练的命令: g_到本行最后一个不是blank字符的位置 fa到下一个为a的字符处,a可根据需要替换 t,到逗号前的一个字符 3fa在当前行查找第三个出现的a F T f t 连接:https://coolshell.cn/articles/5426.html 阅读全文
摘要:
Easyshellcode: 不说了,都是没有工具的血泪史,直接上exp: from pwn import * from numbers import * from ae64 import AE64 context.log_level = 'debug' p = process('./pwn') p 阅读全文
摘要:
题外:本文只是记录自己所学,参考博客:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/glibc-heap/fastbin_attack-zh/ fastbin attack大体思路是修改chunk的fd指针或通过free伪造的chunk,将其添加到fas 阅读全文
摘要:
格式化字符串: 格式化字符串函数可以接受可变数量的参数,并将第一个字符串作为格式化字符串,然后去解析之后的参数。常见的格式化字符串函数有: scanf printf,输出到stdout fprintf,输出到指定的FILE流 vprintf,根据参数列表格式化输出到 stdout vfpirntf, 阅读全文
摘要:
canary是Linux为防止栈溢出的一种保护机制,接着我们分析glibc对canary的实现过程,首先给出跟canary相关的调用栈: security_init() //在elf/rtld.c中 dl_main() 在elf/rtld.c中 _dl_sysdep_start() 在elf/dl- 阅读全文