[BJDCTF2020]Cookie is so stable

首先打开题目,发现有个flag,点进去,出现一个输入框,叫我们输入ID.先不着急输,打开BP一边抓包一边输

随便输几个字看下效果


 

做到这里有点懵,没思路了,看了下大佬的WP,GET到一个新的知识点,服务端模板注入攻击

服务端模板注入链接:1. SSTI(模板注入)漏洞(入门篇) - bmjoker - 博客园 (cnblogs.com)

  1. 服务端模板注入攻击:

网站使用了一些框架语言使前端与数据分开,这类框架语言便是模板,以本题举例,如果在flag页面多尝试几次就会发现,只要是输入正常的内容,都会回显出Hello + “你输入的内容” 这个hello的弹窗便是该网站的模板.既然是模板,有固定的代码,那么就可以根据输入内容进行注入.PHP中的常见模板有twig   smarty   blade

在twig模板里,如果只是将用户的输入作为模板的值,那么不会有太大问题,但如果用户输入的值被认为成是模板输入的一部分,那么用户即可通过绕过来输入一些脚本并运行,并且在twig的模板里存在{{var}},它的本意是输出传递变量,但是也可以执行一些基本表达式,并将其结果作为输入变量的值,例如在本题中当用户输入ID={{2*10}}则输出的结果是hello 20,那么如此便可判定此文件中存在服务端模板注入攻击漏洞

我们在cookie的后方进行注入,输入{{2*10}}进行测试,结果不出所料,本题考察的就是服务端模板注入攻击.

判断好了就好解决了,因为页面为模板生成所以服务端模板注入攻击是有固定Payload的

{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("+你想了解的东西+")}}

例:{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("cat /flag")}}就是查看flag文件,接下来CTRL+C接CTRL+V,成功输出flag

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值