题目:http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/index.php
代码:
<?php
header("Content-type: text/html; charset=utf-8");//header() 函数向客户端发送原始的 HTTP 报头
if (isset($_GET['view-source'])) //isset() — 检测变量是否设置,$_GET[]定义变量
{
show_source(__FILE__); //show_source() 函数对文件进行语法高亮显示
exit(); //exit() 函数输出一条消息,并退出当前脚本
}
include('flag.php'); //include()服务器执行 PHP 文件之前在该文件中插入一个文件的内容
$smile = 1; //$符号是变量符号;把$符号加上字符串,这个字符串就是一个变量名或对象名。
if (!isset ($_GET['^_^'])) $smile = 0;
if (preg_match ('/\./', $_GET['^_^'])) $smile = 0; //preg_match()返回 pattern 的匹配次数。 它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后 将会停止搜索。
if (preg_match ('/%/', $_GET['^_^'])) $smile = 0;
if (preg_match ('/[0-9]/', $_GET['^_^'])) $smile = 0;
if (preg_match ('/http/&
本文通过一道CTF挑战题目的代码审计,探讨了DATA协议的使用。题目要求URL中参数满足特定条件,包括必须有_参数,不包含. %,键名中不能有_,并且_指定的文件不在本地。作者推测要求_指定的文件必须通过DATA协议提供,以此满足不在本地存在的条件。通过DATA协议,可以构造满足条件的URL。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



