0xGame 2024 WP1 RE 一小部分
第一道题下载BabyBase拖到IDA 查看字符串字符串 可以看见有Base64编码表以及Base64字符串编码
“db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0”
“MHhHYW1le04wd195MHVfa24wd19CNHNlNjRfRW5jMGQxbmdfdzNsbCF9“
我们在网站直接搜索base64解密拿到flag0xGame{N0w_y0u_kn0w_B4se64_Enc0d1ng_w3ll!}
第二题 打开BinaryMaster丢IDA 找main函数 f5进去 看到了flag
Game{114514cc-a3a7-4e36-8db1-5f224b776271}
或者直接输114514也可以拿到
第三题 逆向签到题 这里有很多思路去拿到flag
丢IDA找Main函数 可以看见只有缺失一半的flag
我们直接查看字符串 可以拿到另一半我们进行拼接0xGame{S1gn1n_h3r3_4nd_b3g1n_Reversing_n0w}
也可以写个IDA脚本帮你找
import idautils
import idc
def flag(target):
for seg in idautils.Segments():
addr = idc.find_binary(seg, idc.SEARCH_DOWN, target)
if addr != idc.BADADDR:
print(f"在地址: 0x{addr:X}")
flag("0xGame")
第三道题 xor
我们还是老样子直接拿到源程序丢IDA 找到Main函数 进行查看 可以看见进行了xor
写脚本
v5 = bytearray(b"~5\v*',3\x1Fv7\x1Br1") + bytearray([30, 54, 12, 76, 68, 99, 114, 87, 73, 8, 69, 66, 1, 90, 4, 19, 76])
flag = bytearray(len(v5))
for i in range(len(v5)):
flag[i] = v5[i] ^ (78 - i)
print(flag.decode('latin1'))
拿到flag0xGame{X0r_1s_v3ry_Imp0rt4n7!}