md5强弱碰撞

一,类型。

1.弱比较

php中的"=="和"===="在进行比较时,数字和字符串比较或者涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。按照此理,我们可以上传md5编码后是0e的字符串,在比较时php语言会将0e开头的数据认为是科学记数法,而后面的数据会被当做0。

例如:a=xxx&b=xxxx

240610708:0e462097431906509019562988736854
QLTHNDT:0e405967825401955372549139051580
QNKCDZO:0e830400451993494058024219903391
PJNPDWY:0e291529052894702774557631701704
NWWKITQ:0e763082070976038347657360817689
NOOPCJF:0e818888003657176127862245791911
MMHUWUV:0e701732711630150438129209816536
MAUXXQC:0e478478466848439040434801845361

2.强比较

php中的''==='在比较时先判断字符串类型是否相同,再比较值。

数组绕过:md5不能加密数组,在加密数组的时候会返回NULL,如果设置没有判断变量类型或内容,就可以使用,因此,强弱比较都是可以使用数组绕过的。

eg:a[]=1&b[]=2

二,示例

[SWPUCTF 2021 新生赛]easy_md5(弱)

1.包含有一个flag.php的文件,然后 get传参name,post传参password,当name和password的值不等,但是他们的md5值相等时,就会输出flag,否则输出wrong

2.数组绕过

3. 0e绕过

[BJDCTF 2020]easy_md5(sql+弱+强)

1.打开环境,提交查询后,在地址栏出现password=输入内容。

2.bp抓包重放后发现hint: select * from 'admin' where password=md5($pass,true)

3.绕过:ffifdyop

4.得到一个新的页面,看源码,get传参a和b的弱比较,数组绕过或0e绕过

数组绕过     ?a[]=1&b[]=2                  0e绕过      ?a=xxxx&b=xxxx

5.得到一个新页面,强比较post传参param1和param2。

post传参 数组绕过:param1[]=a&param2[]=b,得到flag

 [SWPUCTF 2022 新生赛]奇妙的MD5(sql+弱+强)

1.开始的绕过——ffifdyop

2.弱比较

3. 强比较:post传参wqh和dsy

[UUCTF 2022 新生赛]funmd5(暂缓)

1.打开环境是一段代码

  • preg_replace 用于尝试替换掉可能的 "0e" 形式的字符串,但替换后的字符串并未被重新赋值给 $md5
  • preg_match 用于检查 $md5[0] 是否包含 "0e".
  • $sub 的赋值在 if(isset($md5)) 块之外是无效的.

还有一种.txt文件类型的有待讨论

ffifdyop——详解

select * from `admin` where password=md5($pass,true)

md5在此处是一个函数,语法为md5(string,raw)

string:必需,规定要使用的字符串。

raw:可选    默认不写为FALSE。32位16进制的字符串
             TRUE。16位原始二进制格式的字符串

当raw项为true时,返回的这个原始二进制不是普通的二进制(0,1),而是  'or'6\xc9]\x99\xe9!r,\xf9\xedb\x1c

32位16进制字符串:将MD5加密得到的128 位长度的值以每4位为一组,分为32组,每组以转换为16进制,进行转换得到一个32位的字符串。也就是md5加密。即md5的raw为true时,该函数的输出是原始二进制格式,会被作为字符串处理

构造一个语句使sql语句永恒为真 

布尔型判断时,以数字开头的字符串会被当做整型数,要单引号括起来(闭合语句),eg:password=‘xxx’ or ‘1xxxxxxxxx’,那么就相当于password=‘xxx’ or 1  ,也就是password=‘xxx’ or true,当xxx为纯数字时就可以不用引号

目标:要找一个字符串取32位16进制的md5值里带有276f7227这个字段的,加上数字部分

最终:想要得到一个可以绕过md5的值,就要有以下要素

1.   'or'    该符号对应的16进制是   276f7227 

2.   在276f7227这个字段后面紧跟一个数字,除了0,就是1-9,对应的asc码值是49-57,转化为16进制就是31-39,最终形式为276f7227+(31-39)

3.最终xxxxxx276f7227+(31-39)这样形式的md5值,但是因为md5的特性,要把这个从md5解密出来需要庞大的计算,因此一般不会去另找。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

四川汇聚荣聚荣科技有限公司好不好?

在当今科技飞速发展的时代,企业要想在激烈的市场竞争中脱颖而出,必须具备强大的技术实力和良好的市场口碑。那么,作为一家专注于科技创新的公司,四川汇聚荣聚荣科技有限公司究竟如何呢?接下来,我们将从四个方面进行详…

K210 数字识别 教程

一、烧写固件 连接k210开发板,点开烧录固件工具,选中固件,并下载 二、模型训练 网站:MaixHub 1、上传文件 2、开始标记数据 添加9个标签,命名为1~9,按键盘w开始标记,键盘D可以下一张图片&…

YashanDB携手慧点科技完成产品兼容认证 助力国产信创生态建设

近日,深圳计算科学研究院崖山数据库系统YashanDB与慧点科技顺利完成兼容性互认证。经严格测试,双方产品完全兼容,稳定运行,共同支撑政府、企业、金融等办公应用场景下的数字化转型升级,为企业的信息技术应用创新提供坚…

C++容器之位集(std::bitset)

目录 1 概述2 使用实例3 接口使用3.1 constructor3.2 count_and_size3.3 test3.4 any3.5 none3.6 all3.7 set3.8 reset3.9 filp3.10 to_string3.11 to_ulong3.12 to_ullong3.13 operators1 概述 位集存储位(只有两个可能值的元素:0或1,true或false,…)。   该类模拟bool…

【C++】<知识点> 标准模板库STL(下)

文章目录 六、set与multiset 1. 常用成员函数 2. pair模板 3. set 4. multiset 七、map与multimap 1. map 2. multimap 3. 应用实例 八、容器适配器 1. stack 2. queue 3. priority_queue 九、算法 六、set与multiset 1. 常用成员函数 iterator find(const T&am…

Kubernetes和Docker对不同OS和CPU架构的适配关系

Docker Docker官网对操作系统和CPU架构的适配关系图 对于其他发行版本,Docker官方表示没有测试或验证在相应衍生发行版本上的安装,并建议针对例如Debian、Ubuntu等衍生发行版本上使用官方的对应版本。 Kubernetes X86-64 ARM64 Debian系 √ √ Re…

鸿蒙学习第一课--认识目录结构

项目结构介绍 module.json5 src > main > module.json5:Stage模型模块配置文件。主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。具体的配置文件说明,详见module.json5配置文件。 资源分类和访问 关于s…

【C++题解】1133. 字符串的反码

问题:1133. 字符串的反码 类型:字符串 题目描述: 一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。 如果这是一个小写字符,则它和字符 a 的距离与它的反码和字符 z 的距离…

《当微服务遇上Ribbon:一场负载均衡的华丽舞会》

在微服务的厨房里,如何确保每一道服务都恰到好处?揭秘Spring Cloud Ribbon如何像大厨一样精心调配资源,让负载均衡变得像烹饪艺术一样简单! 文章目录 Spring Cloud Ribbon 详解1. 引言微服务架构中的负载均衡需求Spring Cloud Rib…

SwiftUI中AppStorage的介绍使用

在Swift中,AppStorage是SwiftUI中引入的一个属性包装器,在这之前我们要存储一些轻量级的数据采用UserDefaults进行存取。而AppStorage用于从UserDefaults中读取值,当值改变时,它会自动重新调用视图的body属性。也就是说&#xff0…

地图数据导入

OpenStreetMap 地图数据官网 Geofabrik Download Server 下载数据 china-latest-free.shp.zip 解压到 D:\works\mapworks\shp\tmp 解压找到相关数据(目前我要的是铁路数据) 导入 gis_osm_railways_free_1.shp 到 pgAdmin4 数据库 1.启动 C:\Progra…

unity制作app(9)--拍照 相册 上传照片

1.传输照片(任何较大的数据)都需要扩展服务器的内存空间。 2.还需要base64编码 2.1客户端发送位置的编码 2.2服务器接收部分的代码

“2024 亚马逊云科技中国峰会,挑战俱乐部 Hands On 动手实验课程正在直播中,点击链接畅享生成式AI建构之旅,赢心动好礼

只看不过瘾?别急!我们为您准备了【生成式AI助手 Amazon Q 初体验】动手实验,一款生成式人工智能 (AI) 支持的对话助理,可以帮助您理解、构建、扩展和操作 Amazon 应用程序,您可以询问有关 Amazon 架构、最佳实践、文档…

K8S集群监控方案之Prometheus+kube-state-metrics+Grafana

序言 | Prometheus 中文文档 方案简单架构图 一、部署kube-state-metrics 1、部署文件下载 地址 kube-state-metrics/examples/standard at main kubernetes/kube-state-metrics GitHub 2、修改下载的文件 2.1、修改镜像 原镜像可能下载不了,这里修改deploy…

R实验 参数估计

实验目的: 掌握矩法估计与极大似然估计的求法;了解估计量的优良性准则:无偏性、有效性、相合性(一致性);学会利用R软件完成一个正态总体均值和两个正态总体均值差的区间估计;学会利用R软件完成…

预训练模型语义相似性计算(十一) - M3E和BGE

M3E m3e由MokaAI 训练,开源和评测。 m3e的详细介绍可以看官方的github介绍。本文简要摘录其中一些点,以便后续的应用。 1.千万级 (2200w) 的中文句对数据(开源)。 2.支持同质相似句计算(s2s)和异质检索(s2p),后续支持代码检索。 3.m3e基座模…

Android数据缓存框架 - 内存数据载体从LiveData到StateFlow

引言:所有成功者的背后,都有一份艰苦的历程,不要只看到了人前的风光,而低估了他们背后所付出的努力。 随着flow到流行度越来越高,有开发者呼吁我使用flow,于是我就如你们所愿,新增了StateFlow作…

专家解读 | NIST网络安全框架(2):核心功能

NIST CSF是一个关键的网络安全指南,不仅适用于组织内部,还可帮助管理第三方网络安全风险。CSF核心包含了六个关键功能——治理、识别、保护、检测、响应和恢复,以及与这些功能相关的类别和子类别。本文将深入探讨CSF核心的主要内容&#xff0…

7个靠谱的副业赚钱方法,宝妈,上班族,学生党可以做的兼职副业

你是否也曾面临过这样的困境:生活费紧张,想要找份兼职来补贴家用或是满足自己的小心愿?别担心,今天我将带领你踏入这个丰富多彩的兼职世界,助你轻松达成月入过千的小目标! 在我漫长的兼职探索旅程中&#…

js的学习

什么是JavaScript? JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,”它能使网页可交互。 JavaScript 和Java 是完全不同的语言,不论是概念还是设计。但是基础语法类似。 JavaScript在1995 年由 Brendan Eich 发明&#x…