简介 // composer require "twig/twig" require 'vendor/autoload.php'; class Template { private $twig; public function __construct() { $indexTemplate = '<img ' . 'src="https://loremflickr.com/320/240">' . '<a href="{{link|esca…
一.开始代码审计之旅 01 从今天起,学习代码审计了,这篇文章就叫代码审计01吧,题目来自 PHP SECURITY CALENDAR 2017 的第一题,结合 红日安全 写的文章,开始吧. 二.先看这道题目 1.题目名称:Wish List 2.in_array() 函数的作用 in_array() 函数的作用是判断第一参数是否存在第二个参数中,存在返回 true,不存在返回 false.需要注意的是,如果函数第三个参数为 true,则第一个参数必须还要和第二个参数同类型,函数才能返回 tru…
前言 根据红日安全写的文章,学习PHP代码审计审计的第二节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完这个题目,会有一道CTF题目来进行巩固,外加一个实例来深入分析,想了解上一篇的内容,可以点击这里:PHP代码审计01之in_array()函数缺陷 下面我们开始分析. 漏洞分析 下面来看第一题,代码如下: <?php require 'vendor/autoload.php'; class Template{ private $twig; public functi…
目录 分析 示例 payload 修复建议 Day02-CTF题解 参考链接 分析 先看源码 // composer require "twig/twig" require 'vendor/autoload.php'; class Template { private $twig; public function __construct() { $indexTemplate = '<img ' . 'src="https://loremflickr.com/320/24…
我们使用 payload :?url=javascript://comment%250aalert(1) ,可以执行 alert 函数: 实际上,这里的 // 在JavaScript中表示单行注释,所以后面的内容均为注释,那为什么会执行 alert 函数呢?那是因为我们这里用了字符 %0a ,该字符为换行符,所以 alert 语句与注释符 // 就不在同一行,就能执行.当然,这里我们要对 % 百分号编码成 %25 ,因为程序将浏览器发来的payload:javascript://comment%…
前言 从今天起,结合红日安全写的文章,开始学习代码审计,题目均来自PHP SECURITY CALENDAR 2017,讲完这个题目,会再用一道有相同问题的CTF题来进行巩固.下面开始分析. 漏洞分析 下面我们看第一题,代码如下: <?php class Challenge{ const UPLOAD_DIRECTORY = './solutions/'; private $file; private $whitelist; public function __construct($file)…
0x00 create_function()简介 适用范围:PHP 4> = 4.0.1,PHP 5,PHP 7 功能:根据传递的参数创建匿名函数,并为其返回唯一名称. 语法: create_function(string $args,string $code) string $args 声明的函数变量部分 string $code 执行的方法代码部分 0x01 环境搭建 本次测试在Windows下用PHPstudy搭建环境,使用的是:PHP 5.4.45 + MySQL 5.5 + Apach…
0x00 create_function()简介 适用范围:PHP 4> = 4.0.1,PHP 5,PHP 7 功能:根据传递的参数创建匿名函数,并为其返回唯一名称. 语法: 1 create_function(string $args,string $code) 2 string $args 声明的函数变量部分 3 4 string $code 执行的方法代码部分 0x01 函数功能分析 案例: <?php $newfunc = create_function('$a,$b', 'retu…
先介绍下PHP Filter PHP手册地址:http://php.net/manual/zh/ref.filter.php PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤. 安装 filter 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. PHP Filter 函数 PHP:指示支持该函数的最早的 PHP 版本. 函数 描述 PHP filter_has_var() 检查是否存在指定输入类型的变量. 5 filter_id() 返回指定过滤器的 ID 号.…
PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤 filter_var() 函数通过指定的过滤器过滤变量. 如果成功,则返回已过滤的数据,如果失败,则返回 false. 语法 filter_var(variable, filter, options)variable:必需.规定要过滤的变量. filter:可选.规定要使用的过滤器的 ID. (参见下面的FiltersID列表) options:规定包含标志/选项的数组.检查每个过滤器可能的标志和选项. <? @header…