CTF(web方向)--md5的“===”和“==”的绕过

news2024/12/23 1:48:18

一、PHP弱类型说明

1.简介

php是一种弱类型语言,对数据的类型要求并不严格,可以让数据类型互相转换。

在php中有两种比较符号: 一种是 ==,另外一种是 ===,都是用来比较两个数值是否相等的操作符,但他们也是有区别的:

    == :弱等于。在比较前会先把两种字符串类型转成相同的再进行比较。简单的说,它不会比较变量类型,只比较值。

    === :强等于。在比较前会先判断两种字符串类型是否相同再进行比较,如果类型不同直接返回不相等。既比较值也比较类型。

2.PHP转换规则

    若一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。若字符串以数字开头,则取开头数字作为转换结果,不能转换为数字的字符串(例如"aaa"是不能转换为数字的字符串,而"123"或"123aa"就是可以转换为数字的字符串)或null,则转换为0;例如:

 var_dump(12=="12")                                   // true

 var_dump(12=="12aa")                              //true

 var_dump( "admin"==0) //true

 var_dump(false==""==0==NULL) //true

布尔值true和任意字符串都弱相等。例如:

 var_dump(true=="afa")                   //true

数字和“e"开头加上数字的字符串(例如"1e123”)会当作科学计数法去比较;

 0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0;

当字符串被当作一个数值来处理时,如果该字符串没有包含’.’,‘e’,'E’并且其数值在整形的范围之内,该字符串作为int来取值,其他所有情况下都被作为float来取值,并且字符串开始部分决定它的取值,开始部分为数字,则其值就是开始的数字,否则,其值为0。

二、题目讲解

1.md5弱相等绕过方法

题目链接:

NSSCTF | 在线CTF平台因为热爱,所以长远!NSSCTF平台秉承着开放、自由、共享的精神,欢迎每一个CTFer使用。icon-default.png?t=N7T8https://www.nssctf.cn/problem/386

题目核心描述

if (isset($_GET['name']) && isset($_POST['password'])){

    $name = $_GET['name'];

    $password = $_POST['password'];

if ($name != $password && md5($name) == md5($password))

值不相等md5加密后弱相等

给出一组值,还有很多的类似值可以去网上找

s878926199a

s155964671a

或者数组绕过

name[]=1

password[]=1

2.md5强相等绕过方法

数组表达式绕过

name[]=1

password[]=1

注意:

ffifdyop经过md5加密,表示的16进制转换为ASCII是or。当万能密钥使用

题目

NSSCTF | 在线CTF平台因为热爱,所以长远!NSSCTF平台秉承着开放、自由、共享的精神,欢迎每一个CTFer使用。icon-default.png?t=N7T8https://www.nssctf.cn/problem/713

3.变量转换为字符串md5强相等绕过方法

字符串不相等,md5的强类型相等string($a)!=string($b),md5($a)===md5($b)

array1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&=&array2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2&=

注意传参的后面加上&=

4.上传的参数字符串且md5弱相等

if($_POST['c1']!=$_POST['c2']&&is_string($_POST['c1'])&&is_string($_POST['c2'])&&md5($_POST['c1'])==md5($_POST['c2']))

科学技术法绕过

s878926199a

s155964671a

题目链接

https://www.nssctf.cn/problem/2076

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

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

相关文章

Linux 小技巧1

目录 一. 统计文件的总行数二. 获取从第二行开始的内容三. 合并两个文件为一个文件四. 统计指定列唯一值的数量五. 列出文件的绝对路径六. 获取除了空白行和注释之外的部分 一. 统计文件的总行数 ⏹非压缩文件 统计当前文件夹下csv文件的行数 wc -l ./*.csv统计指定文件夹下…

想要应聘前端工程师——学习路线指南

前端工程师学习路线 按照前端岗位需求,以优先学习工作更需要,面试更常考的内容为原则,由浅入深,层层铺垫,与时俱进,可以较容易地总结出前端学习路线图: HTML / CSS / JavaScript 基础学习 《Web 入门》 MDN 权威入门指南,HTML / CSS / JavaScript 快速上手 《CSS 世界…

面试中算法(链表)

链表相关的题 有一个单向链表,链表中有可能出现“环”,如图所示,如何用程序来判断该链表是否为有环链表呢? 对于这道题,有一个很巧妙的方法,这个方法利用了两个指针。 首先创建两个指针pi和p2(在Python里就是两个对象…

【问题分析】TaskDisplayArea被隐藏导致的黑屏以及无焦点窗口问题【Android 14】

1 问题描述 用户操作出的偶现的黑屏以及无焦点窗口问题。 直接原因是,TaskDisplayArea被添加了eLayerHidden标志位,导致所有App的窗口不可见,从而出现黑屏和无焦点窗口问题,相关log为: 这个log是MTK添加的&#xff0…

目标检测——YOLOv8算法解读

作者:Ultralytics公司 代码:https://github.com/ultralytics/ultralytics YOLO系列算法解读: YOLOv1通俗易懂版解读、SSD算法解读、YOLOv2算法解读、YOLOv3算法解读、YOLOv4算法解读、YOLOv5算法解读、YOLOR算法解读、YOLOX算法解读、YOLOv6算…

7. Django 模型与数据库

第7章 模型与数据库 Django对各种数据库提供了很好的支持, 包括PostgreSQL, MySQL, SQLite和Oracle, 而且为这些数据库提供了统一的API方法, 这些API统称为ORM框架. 通过使用Django内置的ORM框架可以实现数据库连接和读写操作. 本章以SQLite数据库为例, 分别讲述Django的模型…

统一威胁情报如何赋能SOC应对复杂威胁?

安全运营中心(SOC)是组织网络安全战略的核心组成部分,扮演着至关重要的角色。其负责实时监控整个IT基础设施,以检测、响应和预防各类网络安全威胁。网络安全威胁日益复杂且多变的数字化时代,攻击平面泛化、基础设施复杂…

10天精通Python爬虫:详细路线速成,开启兼职副业新篇章!

爬虫,即网络爬虫,是一种自动化程序,用于从互联网上抓取数据。在现代信息社会,爬虫技术广泛应用于数据分析、搜索引擎优化、竞品分析等领域。学习爬虫不仅可以提高数据处理能力,还可以为未来的职业发展打下坚实基础。 …

java基础之java容器-Collection,Map

java容器 java容器分类一. Collection1. List①. ArrayList② . LinkedList③ . Vector 2. Queue队列①. LinkedList②. PriorityQueue 3. Set集合①. HashSet②. TreeSet 二. Map1. HashMap2.TreeMap3. Hashtable java容器分类 java容器分为两大类,分别是Collecti…

修复所有 bug 并不能解决所有问题

原文:jeffpsherman - 2024.04.08 在软件领域,如同在制造业,有些问题是由于 bug 或“特殊原因”引发的,而有些则是“常见原因”,这是由于系统设计和实现的性质所导致的。修复 bug 就是移除特殊原因,消除 bu…

项目经理学习PMP对自己工作有多大帮助?

PMP是一种项目管理认证,也是最流行和含金量较高的认证之一。因此,你问它对项目管理有多大帮助,我可以说PMP可以被视为量身定制给项目管理岗人员的一个证书,你能理解它的重要性吗? 随着国家经济建设由基础设施向高端产业…

新闻 | 电子系协同智能中心与昌平区未来高教园及多所高校开展交流,共话智能无人平台建设

2024年4月8日,清华大学电子工程系在北京昌平两岸共盈科技产业园电子系地空协同智能无人平台基地成功举办“美团杯”智能无人机挑战赛,清华大学电子系党委书记沈渊、昌平区未来城管委会校城融合处处长熊玉川、清华大学团委副书记黄峰等出席。此外来自昌平…

CSS详解(一)

1、css工作中使用场景 美化网页(文字样式、背景样式、边框样式、盒子模型、定位、动画、),布局页面(flex布局、响应式布局、媒体查询) 2、CSS 规则 通常由两个主要部分组成选择器和样式声明 2.1选择器 选择器指定了…

Unity打包PC端exe,压缩打包为一个exe文件

目录 一.打包成功 1.打包输出文件 二.压缩输出目录为exe单个文件 1.添加到压缩文件 2.其他设置 1.点击“高级→自压缩选项” 2.修改解压后运行程序 3.设置模式 4.更新 三、生成.exe 一.打包成功 1.打包输出文件 1、一个后缀为 BurstDebugInformation_DoNotShip的文…

unittest断言_assert_使用python自带的断言

既可以使用: 1. self.assertEqual(ex1, ex2) #判断ex1 是否相等ex2 2. self.assertIn(ex1 ,ex2) # ex2是否包含ex1 注意:所谓的包含不能跳字符 3. self.assertTrue(ex) # 判断ex是否为True又可以使用: """目标断言扩展&…

C#实现 IDbConnection / IDbCommand 等相关通用数据接口

目录 关于数据接口 对象执行流程 范例运行环境 设计与实现 引用 GetConnection方法 GetCommand方法 GetParameter方法 小结 关于数据接口 在.net 应用中,与数据库进行连接、访问和执行经常会用到数据接口的相关对象,如下: 1、 Con…

【mysql】mysql命令使用大全,你想要的都在这里

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

《前端面试题》- React - 如何区分函数组件和类组件

问题 如何区分函数组件和类组件? 答案 可以使用instanceof 或者Component.prototype.isReactComponent。 示例 函数组件 export default function FunctionComonent() {if(FunctionComonent.prototype.isReactComponent){console.log(FunctionComonent是类组件…

前端JS必用工具【js-tool-big-box】,Number数值转换的方法调用学习

这一小节,我们针对前端工具包(npm)js-tool-big-box的使用做一些讲解,主要是针对Number数值型转换的一些方法使用。 目录 前言 1 安装和引入 2 千位逗号分割 3 判断是否大于0 4 判断是否大于0的整数 5 生成指定范围内的随机数…

Allegro画PCB时如何只删除走线的一部分

如何只删除走线的一部分 1、第一步: 2、第二步: 3、第三步,点击相应的走线段就能删除了。 说明:上面的Cline和Line只的是电线和线,您按下删除后,就可以删除这两种东西,但删除的是一整条折线.把这两个取消掉,换成Cline Segs和Ot…