题目链接:BUUCTF在线评测
公众号同步:BUU reverse做题记录 Day03
进入get_flag()函数,找到主要逻辑:
跟进f1的值,发现是半个flag,分析可以发现flag应该是由两部分拼接在一起的(f1和dest),而另一部分关键的处理逻辑就在case4和case5,所以直接写py脚本:
选中数据按H可以转换为16进制:
最终flag:
flag = "GXY{do_not_"
dest = [0x69, 0x63, 0x75, 0x67, 0x60, 0x6F, 0x66, 0x7F] # 注意小端序的问题
for j in range(len(dest)):
if j % 2 == 1:
s = chr(dest[j]-2)
else:
s = chr(dest[j]-1)
flag += s
print(flag)
# GXY{do_not_hate_me}
这题好像有涉及伪随机数的问题,后续研究研究再更新