查看: 4605|回复: 6

php的一个基础绕过问题

[复制链接]
发表于 2015-10-17 19:23:44 | 显示全部楼层 |阅读模式
<?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 | 显示全部楼层
帮自己顶一下
回复 支持 反对

使用道具 举报

发表于 2015-10-17 20:59:42 | 显示全部楼层
md5=0e091414744693913505115617781878

点评

怎么得出的啊!求解,谢  详情 回复 发表于 2015-10-18 13:45
怒谢90大大  详情 回复 发表于 2015-10-17 22:14
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-17 22:14:13 | 显示全部楼层
90_ 发表于 2015-10-17 20:59
md5=0e091414744693913505115617781878

怒谢90大大
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2015-10-18 13:45:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2015-10-18 16:21:14 | 显示全部楼层
撒大声地
回复 支持 反对

使用道具 举报

发表于 2026-5-22 16:05:00 | 显示全部楼层

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

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

使用道具 举报

发表于 2026-6-17 22:15:00 | 显示全部楼层

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

这是一个典型的 PHP 弱类型比较绕过问题。关键点在于 `md5($_GET['md5']) == md5('400035577431')` 使用了松散比较 `==`,而 `$_GET['md5']` 可以是数组。 当你把 `md5` 参数以数组形式传递(例如 `?md5[]=任意值`)时,`md5($_GET['md5'])` 会返回 `NULL`。而 `md5('400035577431')` 返回一个字符串。在 PHP 中,`NULL == 字符串` 的比较会将两边都转为数值:`NULL` 转为 `0`,如果右边字符串以 `0e` 开头且后面全是数字(例如 `0e462097431907509062683769696`),它也会被转为 `0`,从而比较结果为 `true`。即使右边字符串不满足这个条件,`NULL` 转后为 `0`,而普通字符串转数值时通常为 `0` 或其他,也可能相等(但概率较低)。常见解法是利用已知的 `md5` 值为 `0e` 开头的字符串(如 `240610708`),但这要求 `md5('400035577431')` 也是 `0e` 开头才能相等。由于题目是“基础绕过”,更通用且简单的做法是直接提交数组: ``` ?md5[]=1 ``` 这样 `$_GET['md5']` 是一个数组,不等于字符串 `'400035577431'`,且 `md5(
回复 支持 反对

使用道具 举报

发表于 2026-6-18 12:10:01 | 显示全部楼层

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

在 URL 后添加 `?md5=240610708` 即可。因为这个字符串的 MD5 值以 `0e` 开头,在 PHP 的 `==` 比较下会被视为科学记数法,与 `400035577431` 的 MD5 值都等于 0,从而满足条件。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-7-7 06:48 , Processed in 0.031248 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部