实验吧-web-你真的会PHP吗?

本系列文集:实验吧-Write up --将持续更新 觉得还不错请给个喜欢,感谢!

打开之后说have a fun


图片.png

没什么收获,那就抓包来看看吧
发送到repeater里面看看

图片.png

根据Response反馈的信息,我们可以看见 hint:6c525af4059b4fe7d8c33a.txt
打开后发现如下代码, 代码审计走一波。

<?php

$info = ""; 
$req = [];
$flag="xxxxxxxxxx";

ini_set("display_error", false); 
error_reporting(0); 


if(!isset($_POST['number'])){ //注意这里post请求  1.不能为空
   header("hint:6c525af4059b4fe7d8c33a.txt");  //文件头添加hint提示。

   die("have a fun!!"); //die() 函数输出一条消息,并退出当前脚本。
}
foreach([$_POST] as $global_var) { //遍历数组 
    foreach($global_var as $key => $value) { 
        $value = trim($value); //trim() 函数移除字符串两侧的空白字符或其他预定义字符。
        is_string($value) && $req[$key] = addslashes($value); 
    } 
} 

function is_palindrome_number($number) { 
    $number = strval($number); //本函数可将数组及类之外的变量类型转换成字符串类型。
    $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!";//条件1:输入的不能只是数字

}elseif($req['number']!=strval(intval($req['number']))){

     $info = "number must be equal to it's integer!! ";//条件2:输入的值经过变整型又变成字符型后应该与原来一样  

}else{

     $value1 = intval($req["number"]);
     $value2 = intval(strrev($req["number"])); //strrev() 函数反转字符串。 

     if($value1!=$value2){//条件3:输入的值直接变成整型应该和其颠倒之后再变成整型一样
          $info="no, this is not a palindrome number!";
     }else{
          //判断回文数
          if(is_palindrome_number($req["number"])){//条件4:输入的不能是回文,就是颠倒和原来不能一样
              $info = "nice! {$value1} is a palindrome number!"; 
          }else{
             $info=$flag;
          }
     }

}

echo $info;

如果要拿flag,需要满足以下条件:

1. number不为空,且不能是一个数值型数字,包括小数。(由is_numeric函数判断)
2. 输入的值经过变整型又变字符型后应该与原来一样
3. 该数的反转的整数值应该和它本身的整数值相等。
4. 不能是一个回文数。(is_palindrome_number判断):
5. post传入number. 

方法一利用intval溢出 < intval() 函数用于获取变量的整数值。>

intval最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647
eg: intval(‘1000000000000’)会返回 2147483647
64 位系统上,最大带符号的 integer 值是 9223372036854775807。
图片.png

通过抓包信息我们知道服务器的操作系统是32位的,所以我们构造2147483647就可以同时满足2,3条件。

通过空字符可以绕过is_numeric的判断(如%00,%20),所以我们构造payload:
number=2147483647%00number=2147483647%20都可。
分析:
我们来看上面的payload是怎么绕过上面的条件的,

<条件1>post的number中包含%00or%20空字符,在is_numeric判断时,会返回false(即不是数字)
<条件2>$req[‘number‘]!=strval(intval($req[‘number‘]))
intval,strval会忽略掉我们的空字符%00与%20,所以这里也就绕过了
<条件3>
$value1 = intval($req["number"]);
$value2 = intval(strrev($req["number"]));
$value1=$value2
由于我们输入的number已经达到了intval的最大值,所以当执行strrev(反转)后,得到7463847412这个值,这个值经过intval转换为2147483647,所以这两个值相等了。
<条件4>2147483647不是回文数

post传入number得到flag。

图片.png

图片.png

方法二科学记数法绕过
因为要求不能为回文数,但又要满足intval(req["number"])=intval(strrev(req["number"])
所以我们采用科学计数法构造payload为number=0e-0%00ornumber=0e00%00,这样的话我们就可以绕过。
一定要时-0或者00,才不会被判定为回文数
图片.png

图片.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,104评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,816评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,697评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,836评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,851评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,441评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,992评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,899评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,457评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,529评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,664评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,346评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,025评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,511评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,611评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,081评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,675评论 2 359

推荐阅读更多精彩内容