i春秋CTF大本营

2018-11-30  本文已影响0人  小小怪吃吃吃

百度杯”CTF比赛 九月场Code

分析
1、看到链接想到文件包含,读取index.php,发现源代码解密如下:

image.png
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 文件夹,里面存储了一些配置文件。

image.png
2、正则符号理解:见正则表达式全部符号解释
3、代码审计
4、加密解密,脚本爆破
上一篇下一篇

猜你喜欢

热点阅读