bugku web 前女友

本文探讨了一个涉及PHP MD5函数和strcmp函数的安全问题。通过分析源码,揭示了MD5函数处理数组时返回NULL的漏洞,以及利用弱类型比较在MD5结果中构造特定字符串来实现相等的技巧。同时,提到了strcmp函数在无法比较参数时返回0的特性,可以用于构造特定的输入。解题过程中提到了如何利用这些漏洞来解决问题,并分享了可能的解决方案和利用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:bugku web 前女友

知识点:PHP MD5(函数) 弱类型 strcmp函数

工具:无

解题:

点开链接:

没有什么提示,再打开源码

发现连接,点开链接是php脚本:

要求v1和v2不相等而MD5函数作用之后相等,这很明显是考察MD5函数的漏洞,MD5函数存在两个漏洞,一个是MD5函数无法处理数组,对于数组会返回NULL,可在URL构造中传入数组,v1[]=1$v2[]=2;还可以利用弱类型==,众所周知PHP中0==“0”是成立的,我们可以向MD5中传入一些参数,要求结果为”0e”开头,这样在比较时这些字符串会被理解为科学计数法,显然0的任何此次方都为0,最终结果也相等,这些字符串可以是:

QNKCDZO

240610708

s878926199a

s155964671a

s214587387a

s214587387a

然后最后一个关于strcmp函数的漏洞是,当strcmp函数无法比较传入的参数时,也就是出错时,它将会返回0,所以这里可以传入一个数组使其无法比较。

另外此处开始没有想清楚,想传入一个”$flag”,但是仔细一想,传入后结果不是strcmp(‘”$flag”’,$flag)吗,双引号还是没有发挥作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值