做營(yíng)銷型網(wǎng)站多少錢百度關(guān)鍵詞優(yōu)化詞精靈
從題目中獲取文件
使用file命令查看文件類型
修改后綴為.rar后進(jìn)行解壓縮
再次使用file命令查詢?cè)撐募念愋?/p>
再次修改后綴為.pcap或者.pcapng
使用wireshark打開(kāi),直接搜索flag字樣
?在多個(gè)數(shù)據(jù)包里發(fā)現(xiàn)了flag.rar、flag.txt等文件
嘗試使用http導(dǎo)出文件
有一個(gè)flag.rar文件
?
但這是一個(gè)加密了的rar文件
里面雖然有flag.txt,但是我們沒(méi)有密碼
找到之前搜索flag,找到flag.txt字樣的數(shù)據(jù)包
進(jìn)行TCP Stream的追蹤
仔細(xì)分析該TCP流,發(fā)現(xiàn)了一串不知名的base64代碼
19aaFYsQQKr+hVX6hl2smAUQ5a767TsULEUebWSajEo=
繼續(xù)往下翻
?
發(fā)現(xiàn)了這段python代碼,貼在下面:
# coding:utf-8
..
__author__ = 'YFP'
..
from Crypto import Random
.
from Crypto.Cipher import AES
..
import sys
.
import base64
..
IV = 'QWERTYUIOPASDFGH'
..
def decrypt(encrypted):
.aes = AES.new(IV, AES.MODE_CBC, IV)
.return aes.decrypt(encrypted)
..
def encrypt(message):
.length = 16
.count = len(message)
.padding = length - (count % length)
.message = message + '\0' * padding
.aes = AES.new(IV, AES.MODE_CBC, IV)
.return aes.encrypt(message)
..
str = 'this is a test'
..
example = encrypt(str)
..
print(decrypt(example))
最后還有一段:祝你成功(謝謝你啊,笑)
結(jié)合所得信息解題
先對(duì)開(kāi)頭從TCP流中獲取到的base64代碼嘗試進(jìn)行解碼
很顯然,直接進(jìn)行解碼并不能得到任何有效信息
那問(wèn)題就應(yīng)該出在python代碼上了
對(duì)獲取得到的python代碼,進(jìn)行修改,使其能正常運(yùn)行:
# coding:utf-8from Crypto import Random
from Crypto.Cipher import AES
import sys
import base64IV = b'QWERTYUIOPASDFGH'def decrypt(encrypted):aes = AES.new(IV, AES.MODE_CBC, IV)return aes.decrypt(encrypted)def encrypt(message):length = 16count = len(message)padding = length - (count % length)message = message + b'\0' * paddingaes = AES.new(IV, AES.MODE_CBC, IV)return aes.encrypt(message)str = b'this is a test'
example = encrypt(str)
print(decrypt(example))
代碼審計(jì)
以上python程序,是一個(gè)簡(jiǎn)單的加解密程序
原理我們不需要清楚,我們只要使用就可以了
接下來(lái)嘗試把我們上面拿到的base64代碼放進(jìn)程序里進(jìn)行解密
所以程序里只留下必要的解密代碼即可
# coding:utf-8from Crypto import Random
from Crypto.Cipher import AES
import sys
import base64IV = b'QWERTYUIOPASDFGH'def decrypt(encrypted):aes = AES.new(IV, AES.MODE_CBC, IV)return aes.decrypt(encrypted)str = b'19aaFYsQQKr+hVX6hl2smAUQ5a767TsULEUebWSajEo='flag = base64.b64decode(str)print(decrypt(flag))
運(yùn)行結(jié)果:
?回到開(kāi)頭拿到的flag.rar文件,使用密碼對(duì)其進(jìn)行解壓
獲得flag:
?