題目
if (isset($_GET['a']) and isset($_GET['b'])) {
if ($_GET['a'] != $_GET['b']) {
if (md5($_GET['a']) === md5($_GET['b'])) {
echo ('Flag: '.$flag);
}else {
echo 'Wrong.';
}
}
}
相關(guān)知識(shí)
PHP在處理哈希字符串時(shí)俗壹,會(huì)利用”!=”或”==”來(lái)對(duì)哈希值進(jìn)行比較,它把每一個(gè)以”0E”開(kāi)頭的哈希值都解釋為0,所以如果兩個(gè)不同的密碼經(jīng)過(guò)哈希以后,其哈希值都是以”0E”開(kāi)頭的钞护,那么PHP將會(huì)認(rèn)為他們相同,都是0爆办。
常見(jiàn)的payload有
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
sha1(str)
sha1('aaroZmOk')
sha1('aaK1STfY')
sha1('aaO8zKZF')
sha1('aa3OFF9m')
同時(shí)MD5不能處理數(shù)組难咕,若有以下判斷則可用數(shù)組繞過(guò)
if(@md5($_GET['a']) == @md5($_GET['b']))
{
echo "yes";
}
// http://127.0.0.1/1.php?a[]=1&b[]=2