1. 程式人生 > >【實驗吧】Once More&&【筆記】 PHP 函數漏洞總結

【實驗吧】Once More&&【筆記】 PHP 函數漏洞總結

a-z != 百度 col tail alt strlen() 分享 style

<?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

【實驗吧】Once More&&【筆記】 PHP 函數漏洞總結