PHP头条
热点:

writeup---你真的会PHP吗?,writeup---PHP


实验吧的一道题php审计题. 

http://ctf5.shiyanbar.com/web/PHP/index.php

 

抓包发现:hint:......txt 

 

是这样的,根据response反馈的信息,我们可以看见 hint(提示)

那就打开它看看吧

 

 代码审计

//条件1:判断是否为数值型
if(is_numeric($_REQUEST['number'])){
    
   $info="sorry, you cann't input a number!";

}elseif($req['number']!=strval(intval($req['number']))){  //条件二:判断intval(number)是否等于原来number的值
      
     $info = "number must be equal to it's integer!! ";  

}else{

     $value1 = intval($req["number"]);
     $value2 = intval(strrev($req["number"]));  

     if($value1!=$value2){                           //条件三:判断翻转后number的值是否相等
          $info="no, this is not a palindrome number!";
     }else{
          
          if(is_palindrome_number($req["number"])){ //条件四,判断number是否为回文字符串
              $info = "nice! {$value1} is a palindrome number!"; 
          }else{
             $info=$flag;
          }
     }

}

echo $info;

分析:

解:

    第一个条件(1):很好解决,末尾加一个空白字符

    第二个条件(3):只要是一个在表示范围内的数字字符串都行

    第三,第四个条件(4,5):正常思维下,是相互矛盾,不能共存的,

但是我们可以利intval(string)函数特点------当string太大,或者格式错误(不是数字串)时返回  0

+   数字 有正数负数, 正数翻转后还是数,负数(-12)翻转后(12-)就不是一个数了, + intval(-0) = 0

所以 构造字符串 ‘-0      ‘ 就可以满足所有条件了

www.phpzy.comtrue/php/21538.htmlTechArticlewriteup---你真的会PHP吗?,writeup---PHP 实验吧的一道题php审计题.  http://ctf5.shiyanbar.com/web/PHP/index.php   抓包发现:hint:......txt    是这样的,根据response反馈的信息,我们可以看见 hint(提...

相关文章

    暂无相关文章

PHP之友评论

今天推荐