当前位置: 首页 > wzjs >正文

网站建设 浙icp 0578今日重庆重要消息

网站建设 浙icp 0578,今日重庆重要消息,建设教育网站,电商客服外包加盟代理目录 0x00 漏洞原因 0x01 利用方法 0x02 [BJDCTF2020]Easy MD5 1 利用md5($password,true)实现SQL注入 PHP md5弱类型比较 数组绕过 0x00 漏洞原因 1、在进行比较的时候,会先将两边的变量类型转化成相同的,再进行比较 2、0e在比较的时候会将其认…

目录

0x00 漏洞原因

0x01 利用方法

0x02 [BJDCTF2020]Easy MD5 1

利用md5($password,true)实现SQL注入

PHP md5弱类型比较

数组绕过


0x00 漏洞原因

1、==在进行比较的时候,会先将两边的变量类型转化成相同的,再进行比较

2、0e在比较的时候会将其认为是科学计数法,所以无论0e后面是啥,0的次方都等于0

0x01 利用方法

我们可以理解为只要让我们输入的密码在经过函数加密之后是以0e开头即可

以下是一些从其他作者文档里看到的一些经过md5加密后是以0e开头的值:

ej0D
ek06
el08
eo0n
ey0M
ey0O
ez0s
e006
e10l
eU3Z
eW3vfSoL
fToh
fTo1
fUoU
fYou
fapF
fbpf
fdpF
fnpZ
fppr
fqpa
frpj
fwpD
fyp5
f1p2
f4pN
f7pu
fDpQ
fHpP
fIp4
fJpX
fLpv
fOpi
fQp3
fTpi
fVpz
feqN
fjqN
fvq1
fyqy
fAqJ
fEqk
fFqg
fFqi
fHqX
fIqF
fKqh
fLq6
fQq6
fQqA
fRql
fUq4
fUqA
fXq0
farg
farJ
ftrT
f7rm
fCrB
fErY
fIrt
QNKCDZO
s878926199a
s155964671a
s214587387a
s214587387a
s878926199a

若是===判断,则可以通过数组返回NULL的方法来绕过

这里PHP的一些特性

md5(array()) = null
sha1(array()) = null    
ereg(pattern,array()) = null vs preg_match(pattern,array) = false
strcmp(array(), "abc") = null
strpos(array(),"abc") = null

0x02 [BJDCTF2020]Easy MD5 1

当我们进入网页,看到的是一个表单提交,很像sql注入

试了试很多的注入方式,均没有反应,查看一下响应头

确实存在sql注入,但这里进行了md5加密

利用md5($password,true)实现SQL注入

我们先来看看md5函数的用法:

md5(string,binary)

string:要计算的字符串

binary:如果可选的binary被设置为true,那么md5摘要1讲义16字符长度的原始二进制格式返回;若为false,则默认以32位十六进制数返回

也就是说在这里我们可以利用md5值经过hex转成的字符串为'or'+123456这样的字符串,就可以拼接后台sql语句为:

select * from admin where password=' ' or 123456

那么这里,当or后面的值为true时,那不就是万能密码了嘛

这里需要知道一个MySQL的特性:

在mysql里,在用作布尔型判断时,以1开头的字符串会被当做整型数,但需要注意的是这种情况必须要有单引号括起来

password=‘xxx’ or ‘1xxx’ ——> password=‘xxx’ or 1  ——> password=‘xxx’ or true

那么返回值也就是true

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

这里提供一个最常用的:ffifdyop,哈希值为:276f722736c95d99e921722cf9ed621c('or'6<trash>

所以我们这里输入ffifdyop,后端SQL语句就会变为

select * from admin where password=' ' or '6<strash>'

成功进入下一关

PHP md5弱类型比较

我们可以看到检查源代码

这里通过get传参,要求a和b的明文不同,但md5值要相同

注意,这里比较时用的是==,弱类型比较,所以我们可以利用这个点突破,寻找两个明文不同但md5值为0e开头的字符串,参考上面的内容

a=QNKCDZO&b=s214587387a

成功绕过,进入下一关

数组绕过

依旧是md5值比较,但不同于第二关,这是===强相等

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

param1[]=1&param2[]=2

获得flag!

http://www.dtcms.com/wzjs/530643.html

相关文章:

  • 局域网视频网站建设steam交易链接可以随便给别人吗
  • 平台网站做代理商企业邮箱注册
  • 网站建设响应式企业建站流程
  • 广州网站建设 推广公司seo查询外链
  • 企业管理咨询自考网站seo工具
  • 知名网站制作案例永久免费制作网页
  • 香山红叶建设有限公司网站hyein seo
  • 做网站新闻站长查询域名
  • 区域网站查询搜索引擎优化的方式有哪些
  • 做网站的需要什么软件it培训机构出来能找到工作吗
  • 建个静态网站搜索引擎优化seo培训
  • 柳州房地产网站建设长沙本地推广
  • hdwiki做网站克州seo整站排名
  • 将自己做的网站入到阿里云域名上全网营销推广 好做吗
  • 网站留言板漏洞外贸网站建设推广
  • 建设部网站1667号下载建设官网的网站首页
  • 自己做家具展示网站2023第二波疫情已经到来
  • 常州做企业网站的公司网站优化推广招聘
  • 上门做美容的网站购买域名后如何建立网站
  • 书店网站开发今日头条官网首页
  • 武汉做网站公司电话百度快速排名平台
  • 连云港建设局网站站长工具pr值查询
  • 设计app界面网站关键词优化价格
  • 怎么样推销自己网站山东关键词快速排名
  • 手机网站特效代码网站流量统计
  • 山东省住房城乡建设厅查询网站首页seo和sem是什么意思
  • 环境设计专业网站上海短视频培训机构
  • wordpress情侣网站源码谷歌排名优化
  • 安徽建设监管网站网站排名搜索
  • 网站免费正能量加载要快营销软文广告