引言
- 我希望能够帮助像我一样的新手,如果大佬发现WP有问题可以评论,我会改进!
ezVBS
- 我不得不说,要听劝。原题都告诉我了,不让我打开,我还就偏打开了,然后去网上搜VBS逆向,最后在赛博厨子那里逆向出了
1 | I have already warned you not to run VBS directly, your computer is likely to be attacked because of this, just as your flag has been overwritten |
- 当时没怎么注意文字,就去看官方WP了,结果打开记事本看了看,和WP上的不一样啊,我还以为题出错了,回来又下了一遍,没运行,直接记事本编译,我恍然大悟,给我自己气笑了

- 把execute换成wscript.echo,在根目录下运行cmd,输入cscript 1.vbs

- 复制回1.vbs
- 继续替换,直到出现正常的代码

- 这里再运行一遍,还需要替换一遍再运行,才能得到

- 然后交给赛博厨子

Q(≧▽≦)T
- 先运行一下exe文件,发现是输入账户密码类型的,我先用exeinfope看了下有没有壳,发现没有,就拖进了dbg,然后搜索了下字符串
- 中文乱码的话需要安装插件,x64dbg_tol


- 很明显有两个加密后的字符串以及各种提醒文字
- 如果运行了或者看到这个提醒就知道,用户名是四位数字的,我们输出1234试一试,在这之前先打个断点

- 运行后发现这个不是判定用户名是否正确的,而是下面的代码,到达断点后用f7到下面(记得先f9运行一下)

- 看到这里应该可以猜出是判断是否相等,看了之前的字符串,就知道03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4是我们输入的1234加密后的字符串
- 我们去赛博厨子跑一下

- 发现是SHA-256,我们就可以找一个在线平台破解一下之前的SHA-256

- 就得到了用户名
- 然后就去找关于密码的字符串继续看相应内容
- 转到相应的反汇编之后,会发现只有上面的函数和密码加密相关

- 然后就可以把exe丢到IDA分析一下了

- 最后就会发现是这个函数在进行加密

- 联系之前搜索到的字符串,去赛博厨子破解一下

- 就得到了flag
- 这道题我不看官方WP根本没头绪啊:(
Minesweeper
- 打开ms_obfus.js,然后把expert模式下的mines改为0x1,打开hmtl

- 剩余地雷为1就成功了,随便点一下

- 用chatgpt也可以直接出

easyApp
- 下个手机模拟器安装一下,就会发现是个输入+校验的程序
- 可以用jadx进行分析
- 接下来先看AndroidManifest.xml这个文件,它实际上是⼀个apk的配置文件,里面存储了apk的很多信息,包括程序入口点,我们要分析程序的执行逻辑,就得先找到程序的入口点

- 这个就是入口了,双击可以跳转

- onCreat相当于c语言的main函数,就是入口函数
- 直接把代码丢给chatgpt :)



- 直接解压apk,会发现目录和这个反编译目录一样
- 然后把解压出来的bin文件继续拖到jadx

- 用一下官方WP的脚本
1 | from z3 import * |
World’s_end_BlackBox
- 先用exeinfope看看有没有壳,发现没壳,拖进ida发现也看不懂
- 直接拖进dbg搜索一下字符串

- 发现是输入两段字符串
- 把两段Length Error处上面的代码打上断点
- 然后双击到第一个length error处
- 发现他是在对比我们第一个输入的字符串长度,f9运行到这里
- 按空格将jz改为jmp

- 这里其实可以看到应该是长度为12才能过(0xC=12)

- 往下翻一翻会发现下面有个密码错误,在它上方打个断点

- 那很明显这是在对比密码正确与否,这时候按f9就能看到正确密码了
- 这里也需要改下汇编和上面一致

- 这里就显示了正确密码,如果你想要知道这个密码哪里来的
- 也很简单,看上方的每个函数,应该调用了两个函数,我们会发现第一个函数就是加密函数,采用的是xxtea


- 接着往下走会发现还有个长度错误
- 接着断点,改汇编,f9

- 接着往下看会发现有个all perfect的字样
- 在它上方打上断点

- 你会发现这两个断点之前有很多内容,但是真正重要的只有

- 这个函数,以及它上方的存储的东西
- 这里f9运行到刚打的断点,在这之前现在cmd框里输入点东西,因为之前那一大段内容现在用不到,这一部分是加密的
- 接下来就是看这个406D80的函数,看上面的汇编应该可以知道是传入了两个参数,一个是读取你的,一个是它自带的

- 双击这个40B0A0可以在内存框中看他存储了什么东西

- 两个值
- 然后进入406D80后,可以知道那里面就是对比长度和内容的。也可以得知这两个值相当于指针,从开始到结束
- 第一个是开始,第二个是结束,CTRL+g进行跳转


- 就找到了这段加密字符
- ok,返回到之前那两个断点之前一大段的汇编那里
- 会发现401fcc是加密函数

- 这里给出官方的WP脚本
1 | flag = [ |
Calamity_Fortune
- 拖进ida分析一下

- 同步分析在反汇编中的跳跃中打断点

- 调试中,在寄存器窗口,按e将ZF改为1,来跳跃判断

- 持续步进会发现别有洞天,MessageBoxA是个假函数,被调到了另一个函数中

- 继续步入到正确的函数,f5看伪代码
1 | __int64 sub_402B50() |
- 会发现主题流程为
- 读入
input(44 字节) input→ 按 4 字节打包成 11 个uint32- 对这 11 个
uint32做一轮 XXTEA 变体加密(10 轮) - 加密后的 44 字节 → Base64 编码 → 60 字符
- 60 字符做一个固定 seed 的 伪随机洗牌(
srand(0x65)+rand()) - 洗牌后每个字节再 XOR 0x45
- 把结果与程序里的 60 字节常量比较:相等则 success,否则 fail
- 脚本如下
1 | #!/usr/bin/env python3 |
关于本文
由 GuQing 撰写,采用 CC BY-NC 4.0 许可协议。
