FALSE
原题链接
http://ctf5.shiyanbar.com/web/false.php
分析
<?php
if (isset($_GET['name']) and isset($_GET['password'])) {
if ($_GET['name'] == $_GET['password'])
echo '<p>Your password can not be your name!</p>';
else if (sha1($_GET['name']) === sha1($_GET['password']))
die('Flag: '.$flag);
else
echo '<p>Invalid password.</p>';
}
else{
echo '<p>Login first!</p>';
?>
注意到源码是三等号,不能用弱类型判断
<?php
var_dump(sha1('aaroZmOk')===sha1('aaK1STfY')); //bool(false)
var_dump(sha1('aaroZmOk')==sha1('aaK1STfY')); //bool(true)
?>
应该利用false===false
md5 和 sha1 无法处理数组,但是 php 没有抛出异常,直接返回 fasle
sha1([]) === false
md5([]) === false
payload
?name[]=1&password[]=123
flag
CTF{t3st_th3_Sha1}
知识点
md5,sha1不能处理数组,抛出false
网友评论