百度杯”CTF比赛 九月场Code
分析:
1、看到链接想到文件包含,读取index.php,发现源代码解密如下:
2、注意三个地方:首先提示利用phpstorm写的代码,其次对包含的文件名进行了过滤,最后将config替换为_。
3、最关键的点是phpstorm,因为由phpstorm创建的文件目录下面自动生成一个workspace.xml 里面包含了网站文件的结构各种信息。于是访问view-source:http://ad53550afe6b448c83f4a2f04cc564193ecdec0e51524676.game.ichunqiu.com/.idea/workspace.xml。
4、发现fl3g_ichuqiu.php文件,结合index.php中对文件名的限制,构造view-source:http://ad53550afe6b448c83f4a2f04cc564193ecdec0e51524676.game.ichunqiu.com/index.php?jpg=fl3gconfigichuqiu.php进行读取。
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
知识点:
1、phpstorm写的会有一个 .idea 文件夹,里面存储了一些配置文件。
2、正则符号理解:见正则表达式全部符号解释
3、代码审计
4、加密解密,脚本爆破
网友评论