题目: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)吗,双引号还是没有发挥作用。