BUGKU-WEB 备份是个好习惯

题目描述

题目截图如下:
在这里插入图片描述

进入场景看看:
在这里插入图片描述

解题思路

  • 看源码
  • 看提示:备份是个好习惯
  • 扫描目录
  • md5弱比较

相关工具

  • 御剑
  • md5解密:https://www.somd5.com/

解题步骤

  1. 看到的这串字符,有点像md5?
d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427e

但是有没有发现这段代码是两段一样的:

d41d8cd98f00b204e9800998ecf8427e

在这里插入图片描述
结果为NULL,也就是说这是NULL的MD5值。

  1. 使用御剑进行目录扫描

在这里插入图片描述
发现存在一个.bak的备份文件(备份文件一般都是.bak或者.swp):

http://114.67.175.224:11263/index.php.bak

下载后使用记事本查看一下内容,可以看到是一个php的代码:
在这里插入图片描述

<?php
/*** Created by PhpStorm.* User: Norse* Date: 2017/8/6* Time: 20:22
*/include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str,1);
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){echo $flag."取得flag";
}
?>

此代码是一个简单的PHP脚本,主要功能是接收URL参数并进行处理。

  • 首先,通过include_once语句包含了一个名为"flag.php"的文件。该文件应该包含了一个变量$flag,存储着一个标志(flag)。

  • 然后,通过ini_set函数将PHP的错误显示设置为0,即不显示错误信息。

  • 接下来,代码从$_SERVER['REQUEST_URI']中获取URL中的参数部分,并去掉了第一个字符(‘?’)。然后使用str_replace函数将参数中的’key’替换为空字符串。接着使用parse_str函数将参数解析为变量。

  • 然后,代码使用md5函数对$key1$key2进行哈希运算,并通过echo语句输出结果。

  • 最后,代码使用条件语句判断$key1$key2的哈希值是否相等,并且不等于$key1$key2本身。如果满足条件,则通过echo语句输出$flag变量的值和一段文字。

总体来说,此代码通过URL参数传递两个值,并比较它们的哈希值,如果满足md5相同且key不同,则输出一个标志(flag)。


现在关键得到flag,需不同的key1和key2的md5值比较相等(之前解密得到是一个空密码,所以这是提示)。知识点:【md5弱比较】,见后文的【新知识点】,可以使用kkeyey绕过,他会让我们的kkeyey变为key:

方式一:利用==比较漏洞

  • PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。

  • 攻击者可以利用这一漏洞,通过输入一个经过哈希后以”0E”开头的字符串,即会被PHP解释为0,如果数据库中存在这种哈希值以”0E”开头的密码的话,他就可以以这个用户的身份登录进去,尽管并没有真正的密码。

记录一些MD5值:

纯数字类:s878926199a
0e545993274517709034328855841020s155964671a
0e342768416822451524974117254469s214587387a
0e848240448830537924465865611904s214587387a
0e848240448830537924465865611904s878926199a
0e545993274517709034328855841020s1091221200a
0e940624217856561557816327384675s1885207154a
0e509367213418206700842008763514s1502113478a
0e861580163291561247404381396064s1885207154a
0e509367213418206700842008763514s1836677006a
0e481036490867661113260034900752s155964671a
0e342768416822451524974117254469s1184209335a
0e072485820392773389523109082030s1665632922a
0e731198061491163073197128363787s1502113478a
0e861580163291561247404381396064s1836677006a
0e481036490867661113260034900752s1091221200a
0e940624217856561557816327384675s155964671a
0e342768416822451524974117254469s1502113478a
0e861580163291561247404381396064s155964671a
0e342768416822451524974117254469s1665632922a
0e731198061491163073197128363787s155964671a
0e342768416822451524974117254469s1091221200a
0e940624217856561557816327384675s1836677006a
0e481036490867661113260034900752s1885207154a
0e509367213418206700842008763514s532378020a
0e220463095855511507588041205815s878926199a
0e545993274517709034328855841020s1091221200a
0e940624217856561557816327384675s214587387a
0e848240448830537924465865611904s1502113478a
0e861580163291561247404381396064s1091221200a
0e940624217856561557816327384675s1665632922a
0e731198061491163073197128363787s1885207154a
0e509367213418206700842008763514s1836677006a
0e481036490867661113260034900752s1665632922a
0e731198061491163073197128363787s878926199a
0e545993274517709034328855841020大写字母类:
QLTHNDT
0e405967825401955372549139051580QNKCDZO
0e830400451993494058024219903391EEIZDOI
0e782601363539291779881938479162TUFEPMC
0e839407194569345277863905212547UTIPEZQ
0e382098788231234954670291303879UYXFLOI
0e552539585246568817348686838809IHKFRNS
0e256160682445802696926137988570PJNPDWY
0e291529052894702774557631701704ABJIHVY
0e755264355178451322893275696586DQWRASX
0e742373665639232907775599582643DYAXWCA
0e424759758842488633464374063001GEGHBXL
0e248776895502908863709684713578GGHMVOE
0e362766013028313274586933780773GZECLQZ
0e537612333747236407713628225676NWWKITQ
0e763082070976038347657360817689NOOPCJF
0e818888003657176127862245791911MAUXXQC
0e478478466848439040434801845361MMHUWUV
0e701732711630150438129209816536

需要用到的一个kkeyey:

?kkeyey1=MMHUWUV&kkeyey2=MAUXXQC

在这里插入图片描述

方式二:md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。

?kkeyey1[]=no&kkeyey2[]=so

在这里插入图片描述

得到Flag

flag{c98558c4bae6bb11a218f22a53288972}

在这里插入图片描述

新知识点

  • md5强比较&弱比较
    弱比较:使用两个 ‘’==‘’ 比较,只比较值,不比较类型
    强比较:使用三个 ‘’===‘’ 比较,比较值,也比较类型

a==b 将a,b的值转换成同类型再比较值
a===b 先判断a,b类型,若相同,则比较值,若不相同,则返回false

在这里插入图片描述

  • PHP strstr() 函数

有用的话,请点赞收藏评论,帮助更多的同学哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700384.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机Ubuntu系统上安装Pycharm(详细图文教程)

这里写目录标题 一、安装包下载二、安装Pycharm三、启动并配置Pycharm3.1 启动3.2 创建桌面快捷键3.2.1 打开工程后添加桌面快捷键 3.3 安装汉化包 四、创建新的工程项目五、总结 一、安装包下载 Pycharm的官网地址&#xff1a;Pycharm官网 打开官网后的样子如下&#xff1a;…

【NTN 卫星通信】基于NTN和TN的Inter-PLMN海事应用场景

1 场景概述 NTN和TN联合组网的场景&#xff0c;可以有多种应用方式&#xff0c;以下用例描述了同时使用多个卫星PLMN和一个地面5G PLMN的海事场景。 MNO-G是一家成熟的卫星PLMN运营商&#xff0c;运营着几颗GEO卫星。MNO-L是一个相对较新的卫星PLMN运营商&#xff0c;操作LEO卫…

OpenCV 4基础篇| OpenCV像素的编辑

目录 1. 前言1. 像素的访问1.1 数组索引访问1.2 img.item() 2. 像素的修改2.1 数值索引修改2.2 img.itemset() 1. 前言 像素是构成数字图像的基本单位&#xff0c;像素处理是图像处理的基本操作。 对像素的访问、修改&#xff0c;可以使用 Numpy 方法直接访问数组元素。 1. 像…

【Ubuntu】Anaconda的安装和使用

目录 1 安装 2 使用 1 安装 &#xff08;1&#xff09;下载安装包 官网地址&#xff1a;Unleash AI Innovation and Value | Anaconda 点击Free Download 按键。 然后 点击下图中的Download开始下载安装包。 &#xff08;2&#xff09;安装 在安装包路径下打开终端&#…

第三篇:CamX日志打印系统

第三篇:CamX日志打印系统 高通camx的日志主要分2大模块,UMD (user mode driver) 和KMD( kerner mode driver),也就是用户层和kernel层日志。 下面就来看下这2大块日志debug的时候该如何设置? 一、UDM日志 高通camx camera debug日志格式如下: CamX: [][] : . 例子:Ca…

时间获取、文件属性获取 2月20日学习笔记

执行两次代码&#xff0c;打印出两次执行过程中新增的文件及删除的文件 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> #include <stdio.h> #include <string.h> #include <dirent.h>#def…

C++ 之LeetCode刷题记录(三十三)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 目标&#xff1a;执行用时击败90%以上使用 C 的用户。 11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;…

渗透测试之RCE漏洞

RCE&#xff08;remote command execute&#xff09;远程命令执行。应用程序的某些功能需要调用可以执行的系统命令的函数&#xff0c;如果这些函数或者函数的参数被用户控制&#xff0c;就可能通过命令连接符将恶意的命令拼接到函数中&#xff0c;从而执行系统命令。 常见的命…

【rust】9、reqwest 调用 http

文章目录 一、client1.1 post reqwest 实现的 http server 和 client 用 https://github.com/seanmonstar/reqwest cargo add reqwest -F json cargo add tokio -F full一、client 1.1 post async fn http_post<T: Serialize>(addr: String, body: T) -> Result<…

Puppeteer 使用实战:如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客(二)

文章目录 上一篇效果演示Puppeteer 修改浏览器的默认下载位置控制并发数错误重试并发控制 错误重试源码 上一篇 Puppeteer 使用实战&#xff1a;如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客&#xff08;一&#xff09; 效果演示 上一篇实现了一些基本功能&#xff0c;…

应用回归分析:非参数回归

非参数回归是一种统计方法&#xff0c;它在建模和分析数据时不假设固定的模型形式。与传统的参数回归模型不同&#xff0c;如线性回归和多项式回归&#xff0c;非参数回归不需要预先定义模型的结构&#xff08;例如&#xff0c;模型是否为线性或多项式&#xff09;。这使得非参…

[面试] 如何保证Redis和MySQL数据一致性?

为什么要在Redis存数据 Redis 用来实现应用和数据库之间读操作的缓存层&#xff0c;主要目的是减少数据 库 IO&#xff0c;还可以提升数据的 IO 性能。 因为Redis基于内存, 查询效率比MySQL快很多, 所以有限查询Redis中的数据,如果Redis没有就查询数据库然后同步到Redis 出…

低代码与大语言模型的探索实践

低代码系列文章&#xff1a; 可视化拖拽组件库一些技术要点原理分析可视化拖拽组件库一些技术要点原理分析&#xff08;二&#xff09;可视化拖拽组件库一些技术要点原理分析&#xff08;三&#xff09;可视化拖拽组件库一些技术要点原理分析&#xff08;四&#xff09;低代码…

1978-2021年全国及31省市农业机械总动力(万千瓦)

1978-2021年全国及31省市农业机械总动力&#xff08;万千瓦&#xff09; 1、时间&#xff1a;1978-2020年 2、范围&#xff1a;31省 3、来源&#xff1a;各省NJ 农业统计NJ 4、缺失情况&#xff1a;无缺失 5、指标&#xff1a;农业机械总动力 6、指标解释&#xff1a; 农…

每日五道java面试题之spring篇(二)

目录&#xff1a; 第一题 Spring事务传播机制第二题 Spring事务什么时候会失效?第三题 什么是bean的⾃动装配&#xff0c;有哪些⽅式&#xff1f;第四题 Spring中的Bean创建的⽣命周期有哪些步骤&#xff1f;第五题 Spring中Bean是线程安全的吗&#xff1f; 第一题 Spring事务…

LeetCode 448.找到所有数组中消失的数字

目录 1.题目 2.代码及思路 3.进阶 3.1题目 3.2代码及思路 1.题目 给你一个含 n 个整数的数组 nums &#xff0c;其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字&#xff0c;并以数组的形式返回结果。 示例 1&#xff1a; 输入&am…

Redis中的rdb和aof

Redis中的rdb和aof 持久化流程RDB机制redis.conf中rdb的配置save bgsave 自动化 rdb触发的三种方式save 命令bgsave命令自动触发 rdb的优势劣势 AOFaof原理aof配置文件重写原理aof的三种触发机制 appendfsyncaof fix工具 redis-check-aof练习aofaof的优缺点 redis是一个内存数据…

java——IO流基础

目录 IO流IO流的四大分类&#xff1a;IO流的体系&#xff1a;FileinputStream&#xff08;文件字节输入流&#xff09;FileOutputStream(文件字节输出流&#xff09;文件复制资源释放FileReader&#xff08;文件字符输入流&#xff09;FileWriter(文件字符输出流&#xff09;缓…

Python实战: 获取 后缀名(扩展名) 或 文件名

Python实战: 获取 后缀名(扩展名) 或 文件名 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望得到您的订阅和支持~ &…

mysql 事务详解一

前言 提到事务&#xff0c;大家肯定不陌生。在我们现实生活中也是存在的&#xff0c;比如我们去超市购物&#xff0c;然后去支付。虽然是两个步骤&#xff0c;必须保证同时成功&#xff0c;这个交易才可以完成。 如果这个场景&#xff0c;拿到我们购物系统&#xff0c;就是几…