实验吧-Web安全…
内容目录
PHP代码审计
hint:sha1函数你有认真了解过吗?听说也有人用md5碰撞o(╯□╰)o解题链接: 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>';
?>
审阅代码后可知题目需求name和password须不同,sha1()后结果须相同,如此方可获得Flag。
同时,看hint了解到和MD5碰撞相关。
那么,应当是sha1碰撞无疑了。搜索相关信息后了解到,google曾关于sha1碰撞放出两个pdf:
两个SHA1值相同而不一样(SHA256的值不通)的pdf文件.
那么,就是使用这两个pdf文件写入两个变量从而通过此题目了。具体操作就是把这两个pdf文件URLencode,然后构造http请求,发包查看回显即可。
此处参考此文:http://blog.csdn.net/caiqiiqi/article/details/68953730
详细的讲了两个PDF比较和用urllib urlencode的过程。
另外拓展一下,md5类似的:
字符串 240610708跟QNKCDZO所有类似的字符串得到的md5如果是0e打头的,一些语言(PHP)会做隐式转换,当做int类型计算,得到的结果是 0,最后导致0==0,判定为true