前言 根据红日安全写的文章,学习PHP代码审计审计的第二节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完这个题目,会有一道CTF题目来进行巩固,外加一个实例来深入分析,想了解上一篇的内容,可以点击这里:PHP代码审计01之in_array()函数缺陷 下面我们开始分析. 漏洞分析 下面来看第一题,代码如下: <?php require 'vendor/autoload.php'; class Template{ private $twig; public functi…
前言 从今天起,结合红日安全写的文章,开始学习代码审计,题目均来自PHP SECURITY CALENDAR 2017,讲完这个题目,会再用一道有相同问题的CTF题来进行巩固.下面开始分析. 漏洞分析 下面我们看第一题,代码如下: <?php class Challenge{ const UPLOAD_DIRECTORY = './solutions/'; private $file; private $whitelist; public function __construct($file)…
简介 // 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…
目录 分析 示例 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…
前言 根据红日安全写的文章,学习PHP代码审计的第四节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完题目会用一个实例来加深巩固,这是之前写的,有兴趣可以去看看: PHP代码审计01之in_array()函数缺陷 PHP代码审计02之filter_var()函数缺陷 PHP代码审计03之实例化任意对象漏洞 漏洞分析 现在咱们看第一题,代码如下: <?php class Login { public function __construct($user, $pass) {…
我们使用 payload :?url=javascript://comment%250aalert(1) ,可以执行 alert 函数: 实际上,这里的 // 在JavaScript中表示单行注释,所以后面的内容均为注释,那为什么会执行 alert 函数呢?那是因为我们这里用了字符 %0a ,该字符为换行符,所以 alert 语句与注释符 // 就不在同一行,就能执行.当然,这里我们要对 % 百分号编码成 %25 ,因为程序将浏览器发来的payload:javascript://comment%…
一.开始代码审计之旅 01 从今天起,学习代码审计了,这篇文章就叫代码审计01吧,题目来自 PHP SECURITY CALENDAR 2017 的第一题,结合 红日安全 写的文章,开始吧. 二.先看这道题目 1.题目名称:Wish List 2.in_array() 函数的作用 in_array() 函数的作用是判断第一参数是否存在第二个参数中,存在返回 true,不存在返回 false.需要注意的是,如果函数第三个参数为 true,则第一个参数必须还要和第二个参数同类型,函数才能返回 tru…
先介绍下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…
阿里云盾提示phpMyAdmin <=4.8.1会出现漏洞有被SHELL风险,具体漏洞提醒: 标题 phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导致GETSHELL 简介 checkPageValidity函数对外部输入过滤不严,可导致本地包含任意文件.进一步地攻击者可通过注入代码到特定文件进行包含造成远程代码执行. 这个漏洞,将phpmyadmin升级到最新版即可解决. 查看兼容性: phpmyadmin查看最新版与MySQL和PHP版本的兼容性当前…