# Encrypted Flag 首先将附件中的 chall 文件拖入 ida 中分析,同时结合 flag.enc 文件的内容可以知道:1. 加密算法是魔改版的 AES-128;2.flag.enc 文件不是纯密文,它的开头 256 个字节是一张随机生成的查找表(即自定义 AES 中的 S 盒),而文件的剩余部分才是真正用这个 S 盒加密后的 flag 密文;3. 这张 S 盒不是标准的 AES S 盒,而是由程序动态生成的,加密用的 128 位主密钥也是由程序动态生成的,同时无论是生成 S 盒还是生成密钥,程序都使用了 Linux 系统下一个可预测的伪随机数生成器(PRNG):glibc 的...

# BPy_FlagChecker 首先通过题目的提示安装好 python3.10 的环境,然后通过分析下载的附件 chall.py 可知需要我们伪造个钩子脚本来进行 hook,从而把题目里用到的标准库模块换成我们自己的版本。即运行 sim.py 脚本: 123456789101112131415161718192021def main(): import marshalx as marshal, inspect...

# Highly Optimized 首先将下载的附件拖入 ida 进行反编译,然后对 main 函数进行分析可知该文件实现了一个自定义的的、基于栈的虚拟机。它通过一个极其低效的减法循环来计算一个大数对一个小数的取模结果。因此通过题目的暗示和分析绝对不能直接运行这个程序而是应该编写一个 Python 脚本,遍历字节码,提取出每一对 LARGE_NUM 和 SMALL_NUM,然后直接用 Python 的 % 运算符计算出结果,最后将所有结果字符拼接起来,就是最终的...

这是我的第一篇博客文章 # 我为什么想写博客? 那当然是觉得写博客这件事很帅啊,当然最主要的原因还是想要通过博客来让更多人了解 ctf, 同时我现在也只是一个刚刚入门技术还挺菜的一个小登。我希望通过写博客的方式能够使自己的思路更加清晰,技术能够得到一些提升,当然因为我现在还只是一个新手,所以写的一些东西也肯定是比较基础的,也就入门级别吧。因此如果对 ctf 感兴趣的话,也可以和我一起学,毕竟现在对于怎样入门和一些学习方向也大致了解了一些。同时我也觉得,分享技术是一件非常有意义的事情。