分析

a1是flag,先對flag進行了加法操作,所以之後解密時直接減回來就可

Untitled

之後對flag進行了變表的base64加密

Untitled

最後會發送網路請求,也就是題目給出的那個.pcap檔,要用wireshark打開

Untitled

  • wireshark用指令http.request.method=="POST"過濾掉其他無用的封包,只留下POST請求的那些
  • 然後再逐一取出所有data,拼接起來後,這就是我們的密文

Untitled

解密腳本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from base64 import b64decode

fake_table = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/"
real_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
enc_data = list("UDYs1D7bNmdE1o3g5ms1V6RrYCVvODJF1DpxKTxAJ9xuZW==")

# 變表base64要先換表
for i in range(len(enc_data)):
enc_data[i] = real_table[fake_table.find(enc_data[i])]
enc_data = "".join(enc_data)

key = "flarebearstare"
res = list(b64decode(enc_data))
for i in range(len(res)):
res[i] = (res[i]-ord(key[i%14]))%256
print(chr(res[i]),end="")
print(res)