PHP反引号短标签怎么样使用,代码是什么
Admin 2022-08-03 群英技术资讯 930 次浏览
关于“PHP反引号短标签怎么样使用,代码是什么”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。<?php
error_reporting(0);
highlight_file(__FILE__);
function check($input){
if(preg_match("/'| |_|php|;|~|\\^|\\+|eval|{|}/i",$input)){
// if(preg_match("/'| |_|=|php/",$input)){
die('hacker!!!');
}else{
return $input;
}
}
function waf($input){
if(is_array($input)){
foreach($input as $key=>$output){
$input[$key] = waf($output);
}
}else{
$input = check($input);
}
}
$dir = 'sandbox/' . md5($_SERVER['REMOTE_ADDR']) . '/';
if(!file_exists($dir)){
mkdir($dir);
}
switch($_GET["action"] ?? "") {
case 'pwd':
echo $dir;
break;
case 'upload':
$data = $_GET["data"] ?? "";
waf($data);
file_put_contents("$dir" . "index.php", $data);
}
?>
代码审查,参数action控制两个模式,当action=upload的时候会将参数data的值进行过滤并且作为file_put_contents的第三个参数,可以试试输入123的时候是个什么效果,我查资料发现这个函数的第三个参数具体用法是啥我也不知道
当action=pwd的时候,他会输出目录给我们。
一开始两个问号是个啥我也不晓得,查了一下
??是php7新推出来的表达式,有利于简便三元运算符
例:
$example=$_GET['web']??0;
相当于
$example=$_GET['web']?$_GET['web']:0;
意思就是如果web参数如果存在则返回本身,否则返回0
function check($input){
if(preg_match("/'| |_|php|;|~|\\^|\\+|eval|{|}/i",$input)){
// if(preg_match("/'| |_|=|php/",$input)){
die('hacker!!!');
}else{
return $input;
}
}
function waf($input){
if(is_array($input)){
foreach($input as $key=>$output){
$input[$key] = waf($output);
}
}else{
$input = check($input);
}
}
可以发现这是对data参数的过滤防护,过滤了php,eval,花括号等,其实这些过滤内容有点提示我们要用php标签,但是php,eval,空格这些都被过滤掉了,这时候就有新东西学习了
反引号执行系统命令,以及php短标签
PHP: 执行运算符 - Manual就像如果我们要执行ls命令,通常我们都是system('ls');但是有了反引号,我们直接`ls`即可执行,是不是方便多了,但是要开一个默认选项(默认都是打开的),并且不能在双引号字符中使用
php中的短标签 https://www.jb51.net/article/112327.htm
<?$a?>相当于<?php?> <?=$a?>相当于<?php echo $a?>还省略了eval需要的分号
因此我们思路就是,当切换在upload模式的时候,我们可以控制data参数传入php表达式看看效果,然后切换到pwd模式获取路径进入到下面去看看


成功回显1234,有点渲染那味了
构造action=upload&data=<?=`ls`?>,因为空格被过滤了,我们可以利用水平制符\t来代替空格

继续执行命令即可
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
swoole安装失败是因为php版本和编译时使用的phpize和php-config不对应,需要使用绝对路径来进行编译,也就是用绝对路径执行php即可。
php数组中array_product函数的使用:1、函数功能是计算数组中所有值的乘积,在累乘数组中所有成员的时候会将成员的值转为数值类型。2、在计算过程中将数组成员转为数值类型进行计算,需要确保了解数组成员转为数值类型后的值。
验证邮箱格式是否正确可以通过filter_var函数来实现。下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
PHP7增加了标量类型声明的特性,标量类型声明有两种模式 :(1)强制模式(默认)(2)严格模式 。
基本的赋值运算符是“=”。一开始可能会以为它是“等于”,其实不是的。它实际上意味着把右边表达式的值赋给左边的运算数。赋值运算表达式的值也就是所赋的值。也就是说,...
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008