在这里插入图片描述
题目环境进入后是一个输入框,随便传一个值,用burp抓包看看
在这里插入图片描述
查看请求包可知,输入的字符串会被当做password的值以get方式传递,
查看响应报文会发现提示,是一个sql语句,其中用到了md5($pass,true)
在这里插入图片描述第二个参数true会将md5值用原始的6字符输出,
在网上搜索后发现这个可以用ffifdyop绕过,绕过原理是:ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是’ or ‘6,而 Mysql 刚好又会把 hex 转成 ascii 解释,因此拼接之后的形式是 select * from ‘admin’ where password=’’ or ‘6xxxxx’,等价于 or 一个永真式,因此相当于万能密码,可以绕过md5($pass,true)函数
在这里插入图片描述
在下一个界面可以看到注释中有提示

1
2
3
4
5
6
$a = $GET['a'];
$b = $_GET['b'];

if($a != $b && md5($a) == md5($b)){
// wow, glzjin wants a girl friend.

对于md5弱类型比较,可以直接传入两个字符串,使其md5后为0e+纯数字串

QNKCDZO
0e830400451993494058024219903391
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s1885207154a
0e509367213418206700842008763514

构造如下

1
a=s878926199a&b=s155964671a

进入下一关看见如下代码
在这里插入图片描述

1
2
3
4
5
6
7
8
9
 <?php
error_reporting(0);
include "flag.php";

highlight_file(__FILE__);

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

这和上一关的绕过方法类似,不过此处为===是强比较,强比较一般有两种方法,一种是数组绕过,一种是直接强碰撞,我们这里选择数组绕过
param1[]=1&param2[]=2

在这里插入图片描述
得到flag