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!}