【实验吧】Once More&&【笔记】 PHP 函数漏洞总结

<?php
if (isset ($_GET['password'])) {
    if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
    {
        echo '<p>You password must be alphanumeric</p>';
    }
    else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999)
    {
        if (strpos ($_GET['password'], '*-*') !== FALSE)
        {
            die('Flag: ' . $flag);
        }
        else
        {
            echo('<p>*-* have not been found</p>');
        }
    }
    else
    {
        echo '<p>Invalid password</p>';
    }
}
?>

1.ereg漏洞:首先第一层检查需要绕过ereg漏洞,百度可以知道存在截断的问题,ereg读到%00的时候,就截止了

2.strlen()限制了长度小于8并且大小必须大于9999999,1e8=100000000 > 9999999

3.strpos()对password进行匹配,必须含有-,最终才输出flag

于是构造password:1e8%00*-*

将password=1e8%00*-*写入地址栏

补充:所谓ereg漏洞,其实就是00截断。

PHP 函数漏洞总结:

 http://www.tk4479.net/qq_31481187/article/details/60968595

原文地址:https://www.cnblogs.com/liuyimin/p/7668005.html