2025 TPCTF RE wp
linuxpdf
打开附件 下面有个github的链接 打开之后是一个网页的linux 观察一下原本的和附件的区别 发现这里多加载了很多东西
应该是出题人加入的 多运行几次 可以发现最后的那个a9加载完毕之后 Flag出现 所以可以猜测那个a9就是主要的文件
扔010里 发现了很多base64加密的字符串 写个脚本解压保存文件
1 | import base64 |
随后直接找a9 然后扔ida9.0里 (实测ida8.3 7.7没办法F5 不知道什么原因┭┮﹏┭┮)
跟进 发现md5初始化
随后看unk_4008 发现是一堆md5值 中间用00分隔开
提取出来爆破一下 发现最后三个爆破的很快 结果如下
CB0FC813755A45CE5984BFBA15847C1E——>F}
DF88931E7EEFDFCC2BB80D4A4F5710FB——>DF}
D6AF7C4FEDCF2B6777DF8E83C932F883——>PDF}
且有规律 爆破出来的字符在上一个的前面 所以可以猜到是从后往前依次爆破 直接把所有md5值提取出来 写脚本即可
1 | import hashlib |
portable
ida打开附件 查看字符串 发现flag头
随后在start函数开始 往下翻函数 在最后找到输入flag的函数 sub_407F30
在下面找到一个异或 下面显示输入正确
找一下密文跟密钥 扔赛博厨子里解一下得到flag
stone-game
python的exe 直接解包然后反编译 是个小游戏 pwntools直接交互打
exp:
1 | from pwn import * |
chase
玩游戏通关得到第一段flag
在ppu查看器里看见第二段flag
随后看ppu查看器 每个字符下面对应的Tile值都不一样 根据已经给定的flag格式 可以找FLAG对应的字符 扔010里找一下 发现有两段
对应最上面字符的Tile值 打印出来即可
1 | table = {0xd0: '0', 0xd1: '1', 0xd2: '2', 0xd3: '3', 0xd4: '4', 0xd5: '5', 0xd6: '6', 0xd7: '7', 0xd8: '8', 0xd9: '9', |
得到part2 拼接在一起即可
TPCTF{D0_Y0U_L1KE_PLAY1N9_6@M3S_ON_Y0UR_N3S?}