美文网首页
实验吧-你真的会PHP吗

实验吧-你真的会PHP吗

作者: byc_404 | 来源:发表于2019-07-05 12:02 被阅读0次

实验吧这道题让我成功知道自己真的不会php。。。。。。

开始就卡住了,点开链接出现的是

题目

然后就抓包嘛,结果在response里找到了hint

hint: 6c525af4059b4fe7d8c33a.txt

结果半天不知道怎么访问这个文件,,,最后发现只用url里访问就行了

```

<?php

$info = "";

$req = [];

$flag="xxxxxxxxxx";

ini_set("display_error", false);

error_reporting(0);

if(!isset($_POST['number'])){

  header("hint:6c525af4059b4fe7d8c33a.txt");

  die("have a fun!!");

}

foreach([$_POST] as $global_var) {

    foreach($global_var as $key => $value) {

        $value = trim($value);

        is_string($value) && $req[$key] = addslashes($value);

    }

}

function is_palindrome_number($number) {

    $number = strval($number);

    $i = 0;

    $j = strlen($number) - 1;

    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(intval($req['number']))){

    $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;

          }

    }

}

```

源码可以自己去看,总结下来几个条件比较清晰:

 条件一: 提交的number不能是数字

条件二: 输入的数和他整数的返回值相等

条件三: 需要value1和value2相等,value2是反序的value1,所以就是要求是回文数

条件四:用is_palindrome_number()这个函数检测 number,需要number不是回文数

(此处涉及到intval()化整函数与strrev()反序函数,很有意思)

代码审计题总是给出这种看似自相矛盾的条件,实际上还是得从函数的漏洞入手。

第一,二个条件,可以用到%00放在payload中,number就不是数字

第三四个条件则有不同思路,比如说运用到0:

intval()返回的0.00还是0

0的反序也是0

用上科学记数法与小数点可以混过回文的判断

因此payload:  number=0.00%00  或者是 0e00%00.


post方法提交得flag即可

最后仍有一点疑问:之前在网上找到的wp大都用了另一种方法:构造出number=2147483647%00,因为抓包时发现服务器是32位的, 32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647。因此intval()返回的整数最大为2147483647,恰好其逆序比自己大,因此逆序取整还是2147483647,妙啊。

但,这个方法现在不行了。。。

难道是换服务器了?那就不得而知了。。。

相关文章

  • 实验吧-你真的会php吗

    你真的会php吗 原题链接 http://ctf5.shiyanbar.com/web/PHP/index.php...

  • 实验吧-你真的会PHP吗

    实验吧这道题让我成功知道自己真的不会php。。。。。。 开始就卡住了,点开链接出现的是 然后就抓包嘛,结果在res...

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

    题目地址:http://ctf5.shiyanbar.com/web/PHP/index.php 进去就看到简单的...

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

    想着也做了几个PHP题了,那就开这个题吧(每天做哪道真的不仅是玄学,也是心情),然而好像今天这个也没这么简单。 1...

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

    打开之后说have a fun 没什么收获,那就抓包来看看吧发送到repeater里面看看 如果要拿flag,需要...

  • 实验吧WP之你真的懂PHP吗?

    经过这道题,我真的明白了,我不懂PHP... 0x00 PHP有什么问题 尽管PHP是最好的语言,但是由于它是弱类...

  • 你真的会PHP吗(ctf writeup)

    #你真的会PHP吗 -一进页面,就是have fun,没什么实质性的内容,但有标题可以知道这是一道与PHP审计有关...

  • 关于PHP

    你真的了解PHP吗?如果你真的了解PHP,那你为什么还不学习。 全球有60%的互联网网站采用PHP技术。 目前,全...

  • 暖宝宝,不安全你知道吗?

    低温烫伤你听过吗? 暖宝宝你知道怎么使用吗? 那么我们就来做实验吧! 你觉得震惊吗?

  • WEB(实验吧)--PHP大法

    提示:注意备份文件访问index.php.txt将 分析代码知道:因为浏览器会自动解码,所以将hackerDJ编码...

网友评论

      本文标题:实验吧-你真的会PHP吗

      本文链接:https://www.haomeiwen.com/subject/fdmshctx.html