[BJDCTF2020]Cookie is so stable
这道题和The mystery of ip的网站一样,还有可能是ssti,hint.php的注释里有
Why not take a closer look at cookies?
去flag.php提交个1之后,看cookie为
Cookie: PHPSESSID=dba9ac7cbddf1983cbac508b01f8cdf2; user=1
一目了然,接下来就是找payload。再使用之前的
{system('cat /flag')}
被拦下来了,说明加强了过滤。在这之后去看了wp,网上的wp都是直接给出了payload
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("whoami")}}
我是受了这位师傅的文章启发,又去结合了下这道题的源码才搞明白。
这道题在渲染之前使用了twig模板:
Twig是来自于Symfony的模板引擎,它非常易于安装和使用。它的操作有点像Mustache和liquid。Twig使用一个加载器 loader(Twig_Loader_Array) 来定位模板,以及一个环境变量 environment(Twig_Environment) 来存储配置信息。其中,render() 方法通过其第一个参数载入模板,并通过第二个参数中的变量来渲染模板。
我同样在题目的源码中找到了render()
方法和Twig_Environment
配置信息
然后payload的具体原理在的Environment.php
中,贴一下和payload相关部分:
- 先执行
{{_self.env.registerUndefinedFilterCallback("exec")}}
调用了registerUndefinedFilterCallback()
函数(图中884行),注册了一个未定义的函数到filterCallbacks
全局变量中 - 接着执行
{{_self.env.getFilter("whoami")}}
调用了getFilter()
函数,并传入变量$name
值为执行的命令,当函数执行到图中代码875行时,进入循环执行了call_user_func()
,这个函数大伙肯定不陌生:call_user_func 可以把第一个参数作为回调函数调用,调用的参数来源就是第一步中注册的filterCallbacks
全局变量,里边已经躺好了一个刚刚注册的exec
,至此就形成了payload。
[BJDCTF2020]Cookie is so stable相关推荐
- [ctf web]SSTI PHP的模板注入SSTI (smarty+Twig) 以及[BJDCTF2020]Cookie is so stable
PHP的模板注入 如果是在cookie处执行,最好抓包打payload,可能有url编码的问题 smarty模板注入 控制XFF进行命令执行(这是要在前端有IP相关回显的情况) payload: X- ...
- BUUCTF解题十一道(04)
文章目录 [GWCTF 2019]我有一个数据库 [BJDCTF2020]ZJCTF,不过如此 [BJDCTF2020]The mystery of ip [BJDCTF2020]Mark loves ...
- BJDCTF on buuoj
干啥啥不行,签到第一名 [BJDCTF 2nd]签到-y1ng crypto签到,直接base64解码 [BJDCTF 2nd]fake google ssti payload: qaq?name={ ...
- BUUCTF Web 第二页全部Write ups
更多笔记,可以关注yym68686.top 目录 [强网杯 2019]高明的黑客 [BUUCTF 2018]Online Tool [RoarCTF 2019]Easy Java [GXYCTF201 ...
- BUUCTF-模板注入专项刷题
SSTI: 目录 简单 [CSCCTF 2019 Qual]FlaskLight 签到 [BJDCTF2020]Cookie is so stable twig模板注入 [WesternCTF2018 ...
- BUUCTFweb刷题记录
[极客大挑战 2019]BuyFlag header里头有个user=0,将其修改成1 再post money=100000001&password=404a 发现money参数过长,使用数组 ...
- CTF笔记 SSTI模板注入
文章目录 前言 一.判断模板类型 二.上例题 1.[BJDCTF2020]Cookie is so stable 2.[BJDCTF2020]The mystery of ip 总结 前言 之前做ss ...
- lscat cnindex php,BJDCTF2020--web-复现
BJDCTF2020 未完待续 Buu ZJCTF,就这? 看到这题名字还是很不爽的,毕竟我也是个浙江人,不过zjctf,有一说一确实. BUU上和源题好像有点差别. 进题放出源码: ".f ...
- tornado设置cookie和seesion
请求过程 开始是get请求,因为没有cookie,返回预登录表单 提交时post同时设置了cookie 以后访问该路由都是登录的状态 当删除cookie又回到没又设置的状态 但是cookie的信息明显 ...
最新文章
- 33 篇顶会论文如何做到?北大施柏鑫:计算机视觉论文投稿到接收,不可不知的关键环节...
- html embed详解
- 使用浏览器console批量更改图片的宽度
- 常考数据结构与算法-morris遍历
- css不常用,不常用的 CSS
- 一个Json在线格式化的网站
- java集合体检套餐管理系统_体检套餐管理系统
- 不自定义异步方法的线程池默认使用SimpleAsyncTaskExecutor
- jdk重启后步行_向后介绍步行以一种新颖的方式来预测未来
- Android开发:Menu选项菜单
- MLNC – Machine Learning Neural Computation
- 20145313《信息安全系统设计基础》第7周学习总结
- php提取文本数据处理,PHP文件处理—读取文件(一个字符,字串)
- Win10屏幕自带的截图,同时保存多个截图
- 关于 ADXL362 传感器不工作的说明
- Oracle中的next_day(date,char)
- Flutter技术在会展云中大显身手
- 计算机硬盘问题要求备份在弄,硬盘驱动器故障解决方案
- Android快速开发推荐10个框架Android 快速开发框架:afinal、ThinkAndroid、andBase、KJFrameForAndroid、SmartAndroid、
- vue中下载图片跨域