【實驗吧】Once More&&【筆記】 PHP 函數漏洞總結
阿新 • • 發佈:2017-10-14
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 函數漏洞總結