CTF_WP:php-MD5碰撞

本文解析了两道CTF竞赛中的PHP-MD5碰撞题目,通过分析代码逻辑,利用MD5函数的特性,构造了两个不同的字符串使其MD5值相同,成功获取flag。

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

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&param2[]=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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值