CTF_WP:php-MD5碰撞
1.easy MD5-1:
题目链接:easy MD5-1.
think carefully
<!--
**
if($_POST['param1']!==$_POST['param2'] && md5($_POST['param1'])===md5($_POST['param2'])){
die("seclab507{*******}");
}
else{
echo "think carefully";
}
-->
右键查看源代码,分析php代码发现:
需要我们用post
方式传入两个参数,且两个参数不同但是MD5值相同
。这里我们可以利用php的漏洞来绕过,构造特殊的字符串
来实现功能。字符串的构造可以参考这篇文章。CTF中常见php-MD5()函数漏洞
接着我们发现这道题原来是用get
来传递参数,现在我们需要改成post
,上burpsuit,抓包改包,构造payload,得到flag
param1[]=1¶m2[]=2
2.MD5 collision
题目链接:MD5 collision
no
<!--
if((string)$_POST['p1']!==(string)$_POST['p2'] && md5($_POST['p1'])===md5($_POST['p2'])){
die("seclab507{******}");
}
else{
echo "no";
}
-->
分析代码,传入两个参数p1和p2,强制类型转换p1和p2为string
,要求转换后p1不等p2且p1、p2的MD5值相同
,简而言之就是俩不同字符串的MD5相同
,还是这篇文章:CTF中常见php-MD5()函数漏洞
Param1=%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
Param2=%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
burp改包,修改数据报文类型,添加参数,发送,得到flag。