ctf 绕过php,第三届NSCTF测试题Code php 之MD5碰撞和php strcmp函数绕过

本文详细介绍了在第三届NSCTF中遇到的一道关于PHP MD5碰撞和strcmp函数绕过的题目。通过使用fastcoll工具生成MD5碰撞的文件,并利用PHP的特殊处理方式绕过strcmp函数的比较,最终成功获取flag。文中还提到了其他可能的绕过思路,包括0e开头MD5哈希字符串的处理缺陷和使用数组参数的方法。
摘要由CSDN通过智能技术生成

第三届NSCTF测试题Code php 之MD5碰撞和php strcmp函数绕过

20200704021608-5effe6685fc75.png

1、打开网页如图,F12发现code.txt:

20200704021609-5effe66905b0d.png

2、需要php代码审计,提示需要get方式提交3个参数(v1、v2、v3)且v1和v2的值不同,但md5后的值相同(中间是&&与符号),为真时再利用strcmp函数判断v3和$flag是否相同,为真输出flag;

20200704021611-5effe66bca695.png

3、在问了几个朋友后,得到一些提示,首先MD5碰撞有工具,可以生成,另外strcmp函数有绕过漏洞,这就简单了

4、下载fastcoll工具创建一个文本文件init.txt,随便写入1,使用命令fastcoll -p init.txt -o 1.txt 2.txt就可以在当前目录生成不同内容但MD5相同的文件:

20200704021612-5effe66cdadfe.png

5、用下面代码计算MD5并URLENCODE,这里就是v1和v2参数用的;

}echo 'MD5:'. md5( (readmyfile("1.txt")));echo "
";echo 'URLENCODE '. urlencode(readmyfile("1.txt"));echo "
";echo 'URLENCODE hash '.md5(urlencode (readmyfile("1.txt")));echo "
";echo 'MD5::'.md5( (readmyfile("2.txt")));echo "
";echo 'URLENCODE '. urlencode(readmyfile("2.txt"));echo "
";echo 'URLENCODE hash '.md5( urlencode(readmyfile("2.txt")));echo "
";?>

20200704021615-5effe66f76782.png

6、strcmp函数的绕过是这样的(参考:https://blog.csdn.net/dyw_666666/article/details/82349432),重点截图如下:

20200704021617-5effe6719b4be.png

7、开始burp的操作,参数值不要用双引号,连接多个参数用&,拿到flag:

20200704021618-5effe6725cd2e.png

PS1:后来还找到MD5碰撞绕过的其他思路,利用PHP处理0e开头md5哈希字符串的缺陷,有空可以试下:

20200704021621-5effe6752f9cd.png

PS2:最后又发现一个帖子写到居然全部用数组参数绕过,也就是strcmp函数和MD5碰撞都可以用数组绕过。。。真是惊喜一波接着一波呀。。。

20200704021622-5effe676c073d.png

20200704021623-5effe677767ae.png

参考:

如何用不同的数值构建一样的MD5 – 第二届强网杯 MD5碰撞 writeup – 先知社区

MD5碰撞和MD5值(哈希值)相等_Sea_Sand息禅-CSDN博客_md5后的值相同

PHP处理0e开头md5哈希字符串缺陷/bug & PHP expresses two different strings to be the same [duplicate]_ncafei的博客-CSDN博客_0e830400451993494058024219903391

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值