MD5弱类型比较,强类型比较以及真实碰撞
MD5比较类型
弱类型比较
if ($_POST['a'] != $_POST['b'] && md5($_POST['a']) == md5($_POST['b']))
弱类型比较因为php特性,0e开头会被识别为科学计数法,结果0=0比较成功
payload:
a=QNKCDZO&b=aabg7XSs
只要是md5值为0e开头即可
强比较类型
if ($_POST['a'] !== $_POST['b'] && md5($_POST['a']) === md5($_POST['b']))
强类型比较用数组绕过,md5()函数无法解出其数值,就会得到===强比较值相等
payload:
a[]=111&b[]=aaa
传入数组即可
真实碰撞
if ((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b']))
真实md5碰撞,由于string()函数,不能输入数组只能输入字符串
payload:
a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2&b=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
值不等,md5相等即可。md5碰撞。
0e开头MD5的MD5为0e的MD5
0e215962017
评论请遵守评论公德,博主会不定时检查评论并进行回复。