Cris.Q

Back

BITs2CTF-2025 RE方向题解Blur image

帮着同学打了一下北理的第一届新生赛,题目都十分有趣,收获满满。有一道是LLVM pass是容器题,就没打。

(当然,邪恶的代打行为被主办方正义制裁了,不过也是罪有应得啦)

大战WebAssembly#

给了一个 WebAssembly 的 check.wasm,外加一个 JavaScript 脚本逐字符验证 flag:

  if (check(i, flag[i].charCodeAt(), enc[i]) != 1)
javascript

逆向WebAssembly模块可知有check,f和g三个函数,总结下来一次check大概执行以下逻辑:

  flag[i] = enc[i] XOR ((2*i + 1) XOR 8)
javascript

写出解密脚本即可:

什么?你问我怎么逆 WebAssembly 文件?IDA 9.2 直接打开就行啊,有 Loader 的。

答案:BITs2CTF{W311_d0n3!_Y0u'v3_5ucc355fu11y_d3f3473d_7h3_84084010n6_4nd_h15_W45m}

真假奶龙#

使用 Lua Decompiler 反编译Bytecode得:

加密逻辑是典型的替换密码:

  1. 整体反转输入
  2. 从左到右扫描反转后的字符串:
    • 如果是数字:用 (d+2) mod 9 的方式映射到另一个数字
    • 如果是非数字 & 是第一个字符:直接用 ASCII 值
    • 如果是非数字 & 不是第一个字符:把当前 ASCII 和前一个输出值相加

写出解密脚本:

答案:BITs2CTF{W311_d0n3!_Y0u'v3_pr0v3d_70_X140q1_7h47_y0u_r3411y_4r3_4_N4110N6_1u4!1!}

ChaCha20#

简单到令人困惑的Python逆向,pycdc跑一遍就出来了

源代码:

解密脚本:

答案:BITs2CTF{pyc_reverse_is_important}

EasyMaze#

一眼的迷宫题。

查看代码发现没有做任何混淆,逻辑清晰易懂,代码可读性高,夸赞一下。

Maze::Maze 找到迷宫数据,排除反调试后的假数据,发现Maze类中除了前后左右外还有上下两个方向移动的函数,于是猜测应该是把三维迷宫逐层展开成一个二维迷宫(所以看起来是6*36的奇怪比例)。

相关代码截取发给AI后写出了美观的求解页面(非必须,个人喜好)

答案:BITs2CTF{QHGIIVVWRKECAEWNVUTQPHEEEGQ}

Gore#

Go语言逆向。

这里是伪随机,但是Go版本未知,随机数生成逻辑可能和文档记录的不同。

查看 main_keyexpandmain_crypt 发现加密逻辑是环状XOR,但ran[]序列不方便完全静态复现。于是动调之:

写出解密脚本:

答案:BITs2CTF{G0r3_15_h@Aa4%&rD_7O_5oLv3?!}

Math#

fun1到fun4都是纯数学运算,可以化简成Z3求解器友好的形式。

答案:BITs2CTF{a5b51d446ddffa7a486593bbb6fc49}

这题本来想用Angr做符号执行,玩一把花活儿,结果Angr似乎跑进死循环了,可能还是学艺不精不太会用,sad😢😢。

Rustre#

Rust是一种很严谨的语言,所以当你尝试反编译rustre::main的时候你就会看到编译器摁造出来的依托垃圾。

各种边界检查丑的不要不要的,无法看出实际情况。于是让AI对代码进行简化(也就是说:写出一个等效Rust项目,这一步巨难无比,我花了一个下午才折腾出等效的可用代码):

那还说什么,直接vibe it~

答案:BITs2CTF{D1fficuLt_Ru57R3~~}

这个题目还是很有难度的,1kpts名副其实。传统的长代码审计也很克制 AI 。我使用Gemini3分步处理,非常完美的解决了这道题目,令人感叹长上下文就是爽啊~

另外值得提一嘴的就是AI的使用。这些日子大量使用AI辅助做题,发现了一个小技巧:我们把AI的解题步骤分为提供信息和思路推进,则思路推进一定要分步处理,信息提供一定要一步给完

如何理解这句话呢?例如有fun1()fun2()两个函数,经过了3个不同的加密步骤得到密文。

则,你的第一条prompt应该是:fun1()的完整代码+fun2()的完整代码+调度器(让AI知道是3轮加密),2️而不应该是:第一条prompt给fun1()的代码,AI提示你给出fun2()的,你再给。

一次给足信息的效果几乎总是远远强于分步给出信息的会话,fun fact to share.

感想#

最近很不顺心,打N1打的有点破防,结果看到这篇博客,震惊地发现:设计这道卡住我一周的难题的,位列N1官网的师傅,竟然才大二(或大三)。一瞬间被差距打击地体无完肤了,迫切地想做题做题做题。

这种心态健康吗?也不见得多健康,熬夜,眼睛痛,头晕,上课打不起精神,作业欠一堆,还有那些自己处于体验生活目的加入的学生社团和组织的任务…算了,你没有义务成为天才,还是过好自己的生活吧。

You only live once.

BITs2CTF-2025 RE方向题解
https://crisq.top/blog/bits2ctf_2025_newbies
Author Cris.Q
Published at 2025年11月22日
Comment seems to stuck. Try to refresh?✨