深育杯 Reverse WP
阿新 • • 發佈:2021-11-22
press
直接除錯黑盒分析演算法輸入輸出,發現下一個位元組的依賴於上一個位元組來確定。可以直接將press程式作為一個輸入輸出的模組,從第一個位元組開始列舉比對密文,匹配再進入下一個位元組。以下程式碼需要在指定位置下斷點除錯,這個是為了讓資料輸入輸出同步,否則會有部分字元錯誤。
# encoding=utf-8 import subprocess import os import time enc_data = list(open("out.bak", "rb").read()) flag = list(b"ZmxhZ3tkZTBiZDY3ZS02ZDI19d995d185ce44090c13e2984b7ecc6d4123123123123123") fin_flag = "ZmxhZ3tkZTBiZDY3ZS02ZDI" for i in range(len(fin_flag) ,60): for e in range(32,127): #更新flag檔案 flag[i] = e f = open('flag', 'rb+') f.write(bytes(flag)) f.close() # 啟動程序 subprocess.Popen("./press") # 啟動程序 time.sleep(0.03) # 讀取執行結果out enc = open("./out", 'rb') data = enc.read() #ZmxhZ3tkZTBiZDY3ZS02ZDI1LTg3ZDctMTg3Ni1hZDEzMWE2MTY1Y2J9 if data[i] == enc_data[i]: fin_flag += chr(e) print("flag = %s" % fin_flag) break# 此處下斷點 enc.close() os.remove('./out') time.sleep(0.03) # 比較
最後解得 ZmxhZ3tkZTBiZDY3ZS02ZDI1LTg3ZDctMTg3Ni1hZDEzMWE2MTY1Y2J9
base64一下得flag
flag{de0bd67e-6d25-87d7-1876-ad131a6165cb}
Lithops
經逆向分析,這個題目就是一個編碼問題,多字串至utf-8字串之間的轉換問題。最終的校驗的資料是一個utf-8的資料,提取出來後將其按utf-8輸出即可。
flag是 不做偉大時代的旁觀者
to be or not to be, is a question.