# NewStarCTF 2023 公开赛道 RE
# easy_RE
考点:shift+F12
打开 IDA 就可以看到一半的 flag:

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

flag: flag{we1c0me_to_rev3rse!!}
# 壳
考点:UPX 壳
使用 DIE 工具进行查壳:

发现是 UPX4.02,那么只需要用高版本 UPX 工具,即可脱壳。使用 UPX 脱壳工具进行脱壳,
upx -d E:\ramDownLoad\KE.exe |

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

于是我们双击 enc,获取到 enc 的值,再将 enc 的每个字符 - 1,就可以得到 flag:
enc = b'gmbh|D1ohsbuv2bu21ot1oQb332ohUifG2stuQ[HBMBYZ2fwf2~' | |
flag = [i-1 for i in enc] | |
print(bytes(flag)) |

flag{C0ngratu1at10ns0nPa221ngTheF1rstPZGALAXY1eve1}
# Segments
考点: shift+F7
IDA 打开题目,提示我们 使用 shift+F7
:

打开 segment 窗口:

可以发现,flag 被拆分为了许多段。
flag 为 : flag
# ELF
考点:了解 ELF 文件,基本异或操作
打开 IDA,进入主函数,可以发现 flag 先进行了一次 encode 操作,对每一个字符都和 32 进行了与操作,并+16:

随后进行 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?}
