0x02 函数说明
1.sha函数
以字符串形式返回 sha1 散列值。
0x03 数组绕过sha1函数 CTF题解析
1.当我们传入payload:name[]=1&password[]=2,路由过程如下
代码第1-4行:判断name和password是否相等DEBUG:$_GET: {name => 1, password => 2},这里不相等,所以pass
代码第5-11行:使用sha1函数加密name和password比较是否恒等于,恒等于报错flag,否则输出错误的密码DEBUG:$_GET: {name => , password => }(===会比较类型,比如bool sha1()函数和md5()函数存在漏洞,sha1()函数默认的传入参数类型是字符串型,如果传入数组类型会出现错误,从而使sha1()函数返回false,这样===运算符就可以发挥作用,因此获取flag需要构造username和password既不相等,又同样是数组类型),这里都为false,所以恒等于即pass
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>';
}
原文始发于微信公众号(鲲哥的Bypass之旅):奇淫巧计 sha1()函数比较绕过
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论