2.21.7 sha
sha1()
sha1() 函数计算字符串的 SHA-1 散列。
sha1() 函数使用美国 Secure Hash 算法 1。
来自 RFC 3174 的解释 - 美国 Secure Hash 算法 1:SHA-1 产生一个名为报文摘要的 160 位的输出。报文摘要可以被输入到一个可生成或验证报文签名的签名算法。对报文摘要进行签名,而不是对报文进行签名,这样可以提高进程效率,因为报文摘要的大小通常比报文要小很多。数字签名的验证者必须像数字签名的创建者一样,使用相同的散列算法。
sha1(string,raw)
a1表示被加密的字符串, a2表示规定16进制还是二进制输出,这个参数是可选的TRUE - 原始 20 字符二进制格式 FALSE - 默认。40 字符十六进制数。 返回值但成功时返回sha-1的散列值,当失败时返回false。
示例代码
<?php
$flag = "flag";
if (isset($_GET['name']) and isset($_GET['password']))
{
var_dump($_GET['name']);
echo "
";
var_dump($_GET['password']);
var_dump(sha1($_GET['name']));
var_dump(sha1($_GET['password']));
if ($_GET['name'] == $_GET['password'])
echo '
Your password can not be your name!
';
else if (sha1($_GET['name']) === sha1($_GET['password']))
die('Flag: '.$flag);
else
echo '
Invalid password.
';
}
else
echo '
Login first!
';
?>
因为sha1()函数和md5()函数一样,都是不能处理数组
这里的要求是 1、 name、password不为空且不相等 2、name、password经过sha1()处理后的值需要相等
我们构造payload如下
?name[]=1&password[]=2

Last updated
Was this helpful?