筆記:
PHP函數isset(): 檢測變量是否設置
只能用於變量,傳遞任何其它參數都將造成解析錯誤。若想檢測常量是否已設置,可使用 defined() 函數
格式: isset ( mixed var [, mixed var [, ...]] )
若變量不存在則返回 FALSE
若變量存在且其值為NULL,也返回 FALSE
若變量存在且值不為NULL,則返回 TURE
同時檢查多個變量時,每個單項都符合上一條要求時才返回 TRUE,否則結果為 FALSE
== : 比較運算符號 不會檢查條件式的表達式的類型
===: 恆等計算符 , 同時檢查表達式的值與類型。(會檢查表達式類型,如bool)
die()函數 : 停止程序運行,輸出內容
sha1()函數: 計算字符串 "Hello" 的 SHA-1 散列。默認的傳入參數類型是字符串型
W3School: http://www.w3school.com.cn/php/func_string_sha1.asp
例:
<?php $str = "Shanghai"; echo sha1($str); ?>
鏈接: http://www.shiyanbar.com/ctf/1787

右擊查看源代碼,發現這一段:

登錄成功條件: (1)傳入name,password的值(2)name和password的值不能相等(3) name和password的sha1加密散列值相等
前兩個條件容易實現,關鍵是第三個條件,怎樣實現呢?
思路: sha1()函數默認的傳入參數類型是字符串型,可以傳入其他類型,使其返回值為false。如數組類型。
實現: 構造url: http://ctf4.shiyanbar.com/web/false.php?name[]=a&password[]=b (a,b只要不等即可),提交即可獲得flag

