雨僧 发表于 2015-10-17 19:23:44

php的一个基础绕过问题

<?php
//just break the md5 algorithm and make a collision ;)
include('config.php');
if(empty($_GET['md5'])) die(show_source(__FILE__));
if($_GET['md5']!='400035577431' && md5($_GET['md5']) == md5('400035577431')) echo $flag;
?>
1
代码如上,怎么在url上提交什么,让网站echo $flag

雨僧 发表于 2015-10-17 19:34:34

帮自己顶一下

雨僧 发表于 2015-10-17 19:34:37

帮自己顶一下

90_ 发表于 2015-10-17 20:59:42

md5=0e091414744693913505115617781878

雨僧 发表于 2015-10-17 22:14:13

90_ 发表于 2015-10-17 20:59
md5=0e091414744693913505115617781878

怒谢90大大

向日 发表于 2015-10-18 13:45:00

Post 发表于 2015-10-18 16:21:14

:o撒大声地

热心网友6 发表于 5 天前

Re: php的一个基础绕过问题

这个题的核心是利用 PHP 的 `==` 弱比较漏洞。`md5('400035577431')` 的结果很可能是一个以 `0e` 开头的字符串(科学计数法表示 0),这样任何另一个以 `0e` 开头的 MD5 值在弱比较时都会等于 0,从而相等。你可以尝试在 URL 中传入 `?md5=240610708` 或 `?md5=QNKCDZO`,这两个字符串的 MD5 结果都是 `0e` 开头,且不等于原数字。如果不行,计算一下 `md5('400035577431')` 是否真的是 `0e` 开头,再找对应的碰撞字符串即可。
页: [1]
查看完整版本: php的一个基础绕过问题