首页 > 其他分享 >[BJDCTF2020]Easy MD5

[BJDCTF2020]Easy MD5

时间:2023-10-31 14:13:52浏览次数:22  
标签:PHP Easy Lucida application MD5 哈希 BJDCTF2020 php md5

打开题目,发现是一个输入框,抓响应包后发现存在如下提示:Hint: select * from 'admin' where password=md5($pass,true)
PHPmd5() 函数的第二个参数为 True 时,会将 string 转换为 16 字符的二进制格式,如使用一些特殊的 $pass,则可以绕过以上 SQL 查询,如:ffifdyopffifdyop 计算 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() 函数在处理数组时的特性,即 PHPmd5() 函数获取不到数组的值,将返回 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&param2[]=2

标签:PHP,Easy,Lucida,application,MD5,哈希,BJDCTF2020,php,md5
From: https://www.cnblogs.com/imtaieee/p/17800086.html

相关文章

  • ASP.NET+Easyui 两个下拉框联动以及三个下拉框联动
    这是获取用户名<inputclass="easyui-combobox"id="txtIdentifyingperson"name="txtIdentifyingperson"type="text"style="border:1pxsolid#8DB2E3;width:260px;height:30px"data-opt......
  • 安防视频监控平台EasyCVR前端解码与后端解码的区别介绍
    视频监控平台/视频存储/视频分析平台EasyCVR基于云边端一体化管理,支持多类型设备、多协议方式接入,具体包括:国标GB28181协议、RTMP、RTSP/Onvif、海康Ehome,以及海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石SDK等,可覆盖市面上绝大多数的视频源设备。前两期我们介绍了EasyCVRv......
  • 安防视频监控平台EasyCVR服务器需要开启firewall防火墙,该如何开放端口?
    智能视频监控/视频云存储/集中存储/视频汇聚平台EasyCVR具备视频融合汇聚能力,作为安防视频监控综合管理平台,它支持多协议接入、多格式视频流分发,视频监控综合管理平台EasyCVR支持海量视频汇聚管理,可应用在多样化的场景上,包括城市“一网统管”建设、智慧工地风险预警、智慧工厂安全......
  • 视频汇聚平台EasyCVR分发的流如何进行token鉴权?具体步骤是什么?
    视频监控EasyCVR平台能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能支持视频定时轮播。视频监控汇聚平台EasyCVR支持多种播放协议,包括:HLS、HTT......
  • 【安洵杯 2019】easy_serialize_php
    【安洵杯2019】easy_serialize_php收获php反序列化逃逸数组变量覆盖POST请求体传递数组分析代码:<?php$function=@$_GET['f'];functionfilter($img){$filter_arr=array('php','flag','php5','php4','fl1g');......
  • reverse--[HZNUCTF 2023 preliminary]easyAPK
    首先这是一个apk文件,一开始我是用jadx打开的,发现要aes加密啥的,后面我用jeb打开,发现账号和密码都已经解密出来了真的很方便,然后根据代码逻辑判断,这应该是安卓程序的一个登录界面,接下来我们安装一下apk,输入账号admin和密码reiseasy。得到一张图片如下:然后我们将数据提取出来,......
  • Easysearch 容量规划建议
    基于容量估算主要问题:每天将索引多少原始数据(GB)?保留数据多少天?原始数据膨胀率您将强制执行多少个副本分片?您将为每个数据节点分配多少内存?您的内存:数据比例是多少?原则保留+15%以保持在磁盘水位以下。保留+5%用于误差和后台活动的余量。保留相当于一个数据节点的......
  • Easysearch 容量规划建议
    基于容量估算主要问题:每天将索引多少原始数据(GB)?保留数据多少天?原始数据膨胀率您将强制执行多少个副本分片?您将为每个数据节点分配多少内存?您的内存:数据比例是多少?原则保留+15%以保持在磁盘水位以下。保留+5%用于误差和后台活动的余量。保留相当于一个数据节点的资源来处理故障......
  • uniapp的easycom模式
    uniapp的easycom模式,无需import和注册components,即可在页面使用固定目录下的组件。这个目的是简化引用,其实还挺坑的。1.直接使用组件,全局又搜索不到引用,第一感觉让人摸不着头脑2.不引用组件,文件下放了多个组件,不知道到底使用了哪个3.进行组件优化,要删除或提取某些组件的时......
  • Buu web easysql and Havefun
    1.easysql:(sql注入)解题思路:1、手工sql注入判断注入类型。2、构造pyload输入1’判断注入类型页面报错,说明为字符型,在构造pyload时候,需要主要闭合'。pyload:1'or1=1#(#的意思是把后面的注释掉,在这里是注释掉后面',保证语句正常执行)用or是因为1=1为真,那么无论前面的条......