Đề :
File đính kèm
là pcapng. Sau khi mở file bằng wireshark ta thấy đại khái
có 2 thằng nói chuyện với nhau. Và thằng A kêu không an
toàn nên gửi cho thằng B cái tool là file encode.pyc
Follow TCP stream
rồi dump file đó ra.
Đây là file
pyc nên ta sẽ decompiler file này. Sau đó có phần source
code Encode như sau :
# Python 3.5 (decompiled from Python 2.7)# Embedded file name: encode.py# Compiled at: 2016-08-08 05:10:09import randomimport base64P = [27, 35, 50, 11, 8, 20, 44, 30, 6, 1, 5,
2, 33, 16, 36, 64, 3, 61, 54, 25, 12, 21,
26, 10, 57, 53, 38, 56, 58, 37, 43,
17, 42, 47, 4, 14, 7, 46, 34, 19, 23,
40, 63, 18, 45, 60, 13, 15, 22, 9, 62,
51, 32, 55, 29, 24, 41, 39, 49, 52, 48,
28, 31, 59]S = [68, 172, 225, 210, 148, 172, 72, 38, 208,
227, 0, 240, 193, 67, 122, 108, 252, 57, 174,
197, 83, 236, 16, 226, 133, 94, 104, 228, 135,
251, 150, 52, 85, 56, 174, 105, 215, 251, 111,
77, 44, 116, 128, 196, 43, 210, 214, 203, 109,
65, 157, 222, 93, 74, 209, 50, 11, 172, 247, 111,
80, 143, 70, 89]inp = input()inp += ''.join((chr(random.randint(0,47)) for _ in range(64 - len(inp) % 64)))ans = ['' for i in range(len(inp))]for j in range(0,len(inp),64):for i in range(64):ans[j + P[i] - 1] = chr((ord(inp[j + i]) + S[i]) % 256)
ans = ''.join(ans)print(base64.b64encode(ans.encode('utf8')).decode('utf8'))# okay decompiling encode.pyc
Bên cạnh đó
theo dõi tiếp file pcapng thì 2 thằng còn gửi qua một tin
có dạng mã base64. Mà dựa theo đoạn code trên thì sẽ in
ra chuỗi đc encode base64 nên ta đoán tin này là flag sau khi
được encode
Giờ việc cần
làm là dịch ngược đoạn code trên và tin nhắn này để
đưa về flag. Decode
import random
import base64
P = [27, 35, 50, 11, 8, 20, 44, 30, 6, 1, 5,
2, 33, 16, 36, 64, 3, 61, 54, 25, 12, 21,
26, 10, 57, 53, 38, 56, 58, 37, 43,
17, 42, 47, 4, 14, 7, 46, 34, 19, 23,
40, 63, 18, 45, 60, 13, 15, 22, 9, 62,
51, 32, 55, 29, 24, 41, 39, 49, 52, 48,
28, 31, 59]S = [68, 172, 225, 210, 148, 172, 72, 38, 208,
227, 0, 240, 193, 67, 122, 108, 252, 57, 174,
197, 83, 236, 16, 226, 133, 94, 104, 228, 135,
251, 150, 52, 85, 56, 174, 105, 215, 251, 111,
77, 44, 116, 128, 196, 43, 210, 214, 203, 109,
65, 157, 222, 93, 74, 209, 50, 11, 172, 247, 111,
80, 143, 70, 89]
ans="Wmkvw680HDzDqMK6UBXChDXCtC7CosKmw7R9w7JLwr/CoT44UcKNwp7DllpPwo3DtsOID8OPTcOWwrzDpi3CtMOKw4PColrCpXUYRhXChMK9w6PDhxfDicOdwoAgwpgNw5/Cvw=="
ans=(base64.b64decode((ans.encode('utf8')))).decode('utf8')inp=['' for i in range(64)]
for i in range(64):
inp[i]= chr((ord(ans[P[i]-1])-S[i])%256)inp=''.join(inp)print inp
FLAG
:
IceCTF{4Lw4y5_US3_5s1_AnD_n3VR4r_mAKe_Y0ur_0wN_cRyp70}
Nhận xét này đã bị tác giả xóa.
Trả lờiXóacho minh hoi lam the nao de biet data la file .pyc
Trả lờiXóaPhần bôi vàng của bức ảnh thứ 2 từ trên xuống
Xóaok. tks ban :))
Xóa