24kcsplus
文章23
标签36
分类0
Newstar CTF 2025 Week 1 Re方向 Write Up

Newstar CTF 2025 Week 1 Re方向 Write Up

Puzzle

这个题目有很多引导,这里就简单讲讲怎么做的

使用 IDA 打开这个程序,然后按 F5 将汇编转换为伪代码,可以看到主函数的逻辑,以及启动程序时打印在屏幕上的字符串

image.png

双击 Puzzle_Challenge 可以进入查看这个函数的逻辑

image.png

这里可以得到 part1 了

然后按 Esc 返回上一个查看的函数,即主函数

根据提示按 Shift + F12 查看程序中的字符串

image.png

双击第一个字符串即可得到 part4

image.png

可以看到下面的 Buffer 中提到了 part2,单击变量名,然后按 X,可以查看引用此变量的函数

image.png

选择想要查看的函数,然后按 Enter 或者点击 OK 即可查看函数

image.png

进入后可能是汇编界面,依旧是按 F5 将其转为伪代码

image.png

这里打印的字符串提到函数名就是 part2

返回刚刚查看变量的标签页,可以看到之前函数里没见到过的变量

image.png

就是上图中黄色高亮的部分,按 X 查看交叉引用

image.png

按回车进入

image.png

这里的逻辑是一个简单的异或加密,双击查看 encrypted_array 数组内容

image.png

然后根据提示,按下 Shift + E 可提取数据

image.png

选好合适的导出选项,然后编写解密脚本:

a="\xDE\xED\xDA\xF2\xDD\xD8\xD7\xD7"  
for i in a:  
    print(chr(ord(i) ^ 0xAD), end='')

运行即可得到 part3

image.png

Strange Base

先使用 IDA 打开,可以看到一个 Base64 加密

image.png

尝试解密发现无法解出有效结果

image.png

查看加密函数

image.png

发现使用了自定义映射字符

image.png

将自定义字符提取出来,即可解出 flag

image.png

注意:使用 Cyberchef 解码时,其有可能会将自定义映射字符识别为正则表达式,需要将其中的 - 转义为 \- 才可正常解码

有关 Base64 可查阅:Base64

X0r

使用 IDA 打开,main 函数即此程序的加密逻辑

image.png

程序对输入的字符串先进行长度判断,然后三个一组,每组第一个字符与 0x11 进行异或,第二个与 0x45 异或,第三个与 0x14 异或

运算完成后还有一次异或的运算,根据这样的逻辑,可以写出解密脚本:

a = 'anu`ym7wKLl$P]v3q%D]lHpi'  
  
for i in range(len(a)):  
    if i % 3 == 0:  
        print(chr(ord(a[i]) ^ 0x14 ^ 19), end='')  
    elif i % 3 == 1:  
        print(chr(ord(a[i]) ^ 0x11 ^ 19), end='')  
    else:  
        print(chr(ord(a[i]) ^ 0x45 ^ 81), end='')

运行即可得到 flag

image.png

有关异或运算可以看《深入理解计算机系统》中的 2.1.6,这道题是利用了异或运算中这样的规律:

a^b=c a^c=b b^c=a

EzMyDroid

这是一道安卓逆向题,需要使用 JADX 来进行逆向

使用 JADX 打开可以看到程序逻辑

image.png

这里的没有 flag 处理的相关逻辑,可以看看 FirstFragment 类

image.png

这里可以发现,按下按钮后,会将输入框中的内容使用 AES 加密,双击 encrypt 方法,可以看到 AES 的模式为 ECB 模式,填充方式为 PKCS5Padding,加密后会将加密内容使用 Base64 编码

image.png

由此可知,从 FirstFragment 类中传入 encrypt 方法的是明文与密钥,密钥为 1145141919810000,加密后结果赋值给 strEncrypt 变量,然后与一个 Base64字符串比较

根据以上分析,可以解密得到 flag

image.png

debug

动态调试

使用 IDA 打开

image.png

可以看到程序的逻辑比较负责,这个时候可以进行动态调试

可能需要配置远程调试器,可以查阅这篇文章

题目提示在 x0r 函数下断点

image.png

找到 x0r 函数,然后在最后一行下断点,可以按下 F2 或者点击行号前的小点来下断点

然后按下 F9,程序会运行到断点处暂停

image.png

双击 flag 数组,然后提取数据,即可获得 flag

image.png

本文作者:24kcsplus
本文链接:https://24kblog.top/posts/2944863376/
版权声明:除非特别声明,否则本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×