码迷,mamicode.com
首页 > 编程语言 > 详细

CTF经典题型 md5()函数数组绕过

时间:2019-07-08 19:22:06      阅读:579      评论:0      收藏:0      [点我收藏+]

标签:amp   就会   serve   md5值   https   spl   bsp   style   数组   

下面是php源码

<?

include_once “flag.php”;
ini_set(“display_errors”, 0);
$str = strstr($_SERVER[‘REQUEST_URI’], ‘?’);
$str = substr($str,1);
$str = str_replace(‘key’,”,$str);
parse_str($str);
echo md5($key1);

echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
echo $flag.”取得flag”;
}
?>

//意思是将get的两个参数中的key替换为空(这里可以用kekeyy绕过),然后对key1,key2的值进行md5加密,并进行比较,

//如果md5加密的值一样而未加密的值不同,就输出flag.

有两种方法绕过:

1,md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。

2,利用==比较漏洞

如果两个字符经MD5加密后的值为 0exxxxx形式,就会被认为是科学计数法,且表示的是0*10的xxxx次方,还是零,都是相等的。

下列的字符串的MD5值都是0e开头的:

QNKCDZO

240610708

s878926199a

s155964671a

s214587387a

s214587387a

 

参考https://blog.csdn.net/zpy1998zpy/article/details/80582974

CTF经典题型 md5()函数数组绕过

标签:amp   就会   serve   md5值   https   spl   bsp   style   数组   

原文地址:https://www.cnblogs.com/threesoil/p/11153063.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!