1. 程式人生 > 其它 >深育杯 Reverse WP

深育杯 Reverse WP

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.