LILCTF2025-wp
Crypto
- 本次密码题感觉偏简单,我就做了个
baaaaaag,赛后复现一下其他题目。然而baaaaaag这个题目其实也算是背包造格的模版题目。 - 听说这个要像
LitCTF的那个背包密码一样爆破个几位,但是用BKZ()规约就能秒,应该算是非预期了吧。
baaaaaag
RE
ARM-ASM
- 这道题其实算是比较简单的,并且自从有了
IDA 9.0,支持其他架构的反编译后对于ARM的逆向会更容易。但是这题开赛的时候卡了一天了,当时没有注意到自定义的base64编码QAQ,要不然第一天牢完这题还有时间牢别的题目的。
PWN
heap-Pivoting
- 这题我做的方式并不是预期解,有用到爆破。接下来先说明一下我做的题目思路。(当时六级查分是真睡不着,就通宵打打了。)
解法1
-
大致思路是这样的:
- 该附件是静态编译的附件,而静态编译的该附件在可读可写段也保存着
main_arena、free_hook、malloc_hook,所以还是不太需要打IO结构体 - 先确定好这些变量的地址,之后使用
unsorted_bin_attack去打global_max_fast - 再使用
fastbin_double_free将堆块申请到存放堆地址的数组上(这部分需要利用堆地址随机偏移为0x11*才能申请到该地址,这个就需要爆破了但是当时爆破了2小时才出来QAQ,本地的话其实很快就能爆破出来的。) - 最后就是打
free_hook,由于开启了沙箱就需要使用orw的方式,并且打free_hook需要将rsp指针从栈上迁移到堆上,在堆上写rop链。这里选用的gad_get是xchg esp,edi;
- 该附件是静态编译的附件,而静态编译的该附件在可读可写段也保存着
-
先来查看一下附件,会发现
解法2
- 解法2应该是预期解法了,看别人博客是这样写的。
- 使用
unsorted_bin_attack打存放堆地址的数组,这样就可以直接编辑main_arena - 修改
main_arena这个地址中的top_chunk,将top_chunk的值该到存放堆地址的数组上 - 最后就是打
free_hook与解法1的最后一步是一样的。
- 使用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 iyheart的博客!

