# NewStarCTF 2023 公开赛道 RE

# easy_RE

考点:shift+F12

打开 IDA 就可以看到一半的 flag:

![image-20231008143237939](NewStarCTF 2023 公开赛道 RE/image-20231008143237939.png)

另一半 flag 使用 shift F12 查看字符串,可以查找到

![image-20231008143316980](NewStarCTF 2023 公开赛道 RE/image-20231008143316980.png)

flag: flag{we1c0me_to_rev3rse!!}

#

考点UPX 壳

使用 DIE 工具进行查壳:

![image-20231008144157636](NewStarCTF 2023 公开赛道 RE/image-20231008144157636.png)

发现是 UPX4.02,那么只需要用高版本 UPX 工具,即可脱壳。使用 UPX 脱壳工具进行脱壳,

upx -d E:\ramDownLoad\KE.exe

![image-20231008150024506](NewStarCTF 2023 公开赛道 RE/image-20231008150024506.png)

脱壳后再使用 IDA 打开程序,查看 main 函数,可以发现,程序将 flag 的每个字符 + 1,然后喝 enc 进行比较:

![image-20231008150903238](NewStarCTF 2023 公开赛道 RE/image-20231008150903238.png)

于是我们双击 enc,获取到 enc 的值,再将 enc 的每个字符 - 1,就可以得到 flag:

enc = b'gmbh|D1ohsbuv2bu21ot1oQb332ohUifG2stuQ[HBMBYZ2fwf2~'
flag = [i-1 for i in enc]
print(bytes(flag))

![image-20231008151250083](NewStarCTF 2023 公开赛道 RE/image-20231008151250083.png)

flag{C0ngratu1at10ns0nPa221ngTheF1rstPZGALAXY1eve1}

# Segments

考点: shift+F7

IDA 打开题目,提示我们 使用 shift+F7

![image-20231008191757619](NewStarCTF 2023 公开赛道 RE/image-20231008191757619.png)

打开 segment 窗口:

![image-20231008192402656](NewStarCTF 2023 公开赛道 RE/image-20231008192402656.png)

可以发现,flag 被拆分为了许多段。

flag 为 : flag

# ELF

考点:了解 ELF 文件,基本异或操作

打开 IDA,进入主函数,可以发现 flag 先进行了一次 encode 操作,对每一个字符都和 32 进行了与操作,并+16:

![image-20231008194607787](NewStarCTF 2023 公开赛道 RE/image-20231008194607787.png)

随后进行 base64 加密,base64 的密码本是正常的,可以放心解密:

from base64 import *
s = b'VlxRV2t0II8kX2WPJ15fZ49nWFEnj3V8do8hYy9t'
s1 = b64decode(s)
flag = b''
for i in s1:
    flag += bytes([((i - 16)^32)])
print(flag)

得出 flag: flag{D0_4ou_7now_wha7_ELF_1s?}

![image-20231008201358737](NewStarCTF 2023 公开赛道 RE/image-20231008201358737.png)