題目
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ì)利用”!=”或”==”來對(duì)哈希值進(jìn)行比較,它把每一個(gè)以”0E”開頭的哈希值都解釋為0,所以如果兩個(gè)不同的密碼經(jīng)過哈希以后,其哈希值都是以”0E”開頭的,那么PHP將會(huì)認(rèn)為他們相同,都是0。
常見的payload有
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
sha1(str)
sha1('aaroZmOk')
sha1('aaK1STfY')
sha1('aaO8zKZF')
sha1('aa3OFF9m')
同時(shí)MD5不能處理數(shù)組,若有以下判斷則可用數(shù)組繞過
if(@md5($_GET['a']) == @md5($_GET['b']))
{
echo "yes";
}
// http://127.0.0.1/1.php?a[]=1&b[]=2