Bugku-CTF之各種繞過


Bugku-CTF之各種繞過


本題要點:php代碼審計、hackbar利用

 <?php
highlight_file('flag.php');
$_GET['id'] = urldecode($_GET['id']);
$flag = 'flag{xxxxxxxxxxxxxxxxxx}';
if (isset($_GET['uname']) and isset($_POST['passwd'])) {
    if ($_GET['uname'] == $_POST['passwd'])

        print 'passwd can not be uname.';

    else if (sha1($_GET['uname']) === sha1($_POST['passwd'])&($_GET['id']=='margin'))

        die('Flag: '.$flag);

    else

        print 'sorry!';

}
?> 

閱讀代碼:uname的值和passwd不能相等
兩個加密后的值相等並且id=margin
sha1() 函數計算字符串的 SHA-1 散列。

sha1() 函數使用美國 Secure Hash 算法 1。

來自 RFC 3174 的解釋 - 美國 Secure Hash 算法 1:SHA-1 產生一個名為報文摘要的 160 位的輸出。報文摘要可以被輸入到一個可生成或驗證報文簽名的簽名算法。對報文摘要進行簽名,而不是對報文進行簽名,這樣可以提高進程效率,因為報文摘要的大小通常比報文要小很多。數字簽名的驗證者必須像數字簽名的創建者一樣,使用相同的散列算法。
利用sha1函數無法處理數組的特性即可。當對sha1()函數傳入數組時會返回null,由此,只需要傳入兩個不同的數組即可成功繞過。


免責聲明!

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



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