php代码学习(二)绕过空白过滤

绕过空白过滤

<?php
 
$info = ""; 
$req = [];
$flag="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
 
ini_set("display_error", false); //为一个配置选项设置值
error_reporting(0); //关闭所有PHP错误报告
 
if(!isset($_GET['number']))//检测,要不是一个数
{
   header("hint:26966dc52e85af40f59b4fe73d8c323a.txt"); //HTTP头显示hint 26966dc52e85af40f59b4fe73d8c323a.txt
 
   die("have a fun!!"); //die — 等同于 exit()
 
}
 
foreach([$_GET, $_POST] as $global_var) //检测,要是一个数
{  //foreach 语法结构提供了遍历数组的简单方式 
    foreach($global_var as $key => $value)
     { 
        $value = trim($value);  //trim — 去除字符串首尾处的空白字符(或者其他字符)
        is_string($value) && $req[$key] = addslashes($value); // is_string — 检测变量是否是字符串,addslashes — 使用反斜线引用字符串
    } 
} 
 
 
function is_palindrome_number($number)//传参,要是回文数
{ 
    $number = strval($number); //strval — 获取变量的字符串值
    $i = 0; 
    $j = strlen($number) - 1; //strlen — 获取字符串长度
    while($i < $j) 
    { 
        if($number[$i] !== $number[$j])
        { 
            return false; 
        } 
        $i++; 
        $j--; 
    } 
    return true; 
} 
 
//传参,要不是回文数 
if(is_numeric($_REQUEST['number'])) 
{
 
   $info="sorry, you cann't input a number!";
 
}
elseif($req['number']!=strval(($req['number']))) //intval — 获取变量的整数值
{
 
     $info = "number must be equal to it's integer!! ";  
 
}
else
{
 
     $value1 = intval($req["number"]);
     $value2 = intval(strrev($req["number"]));  
 
     if($value1!=$value2)
     {
          $info="no, this is not a palindrome number!";
     }
     else
     {
 
          if(is_palindrome_number($req["number"]))
          {
              $info = "nice! {$value1} is a palindrome number!"; 
          }
          else
          {
             $info=$flag;
          }
     }
 
}
 
echo $info;

鸣谢:bowu678项目 https://github.com/bowu678/php_bugs

is_numeric():判断是否为数字
intval():取整数
strval():取反
addslashes:反斜杠引用

逻辑为:
1、要求number不是数字。
2、要求number过滤前是数字(且为整数)。
3、要求number过滤后是回文数。
4、要求number不是回文数。
(出这种的是不是变态?)
所以访问:http://localhost/filter.php?number= 131
(%00为空格截断,%0c为/f转义符)

鸣谢:bowu678项目 https://github.com/bowu678/php_bugs

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值