实验吧-Web安全-FALSE

实验吧-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:
https://shattered.it/static/shattered-1.pdf
https://shattered.it/static/shattered-2.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

harmoc

发表评论

电子邮件地址不会被公开。 必填项已用*标注