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

第29天:Web开发-PHP应用弱类型脆弱Hash加密Bool类型Array数组函数转换比较

#知识点

1、安全开发-原生PHP-弱类型脆弱

2、安全开发-原生PHP-函数&数据类型

3、安全开发-原生PHP-代码审计案例

一、PHP弱类型对比

1、== 和 ===

两个等号==是弱比较,使用==进行对比的时候,php解析器就会做隐式类型转换,如果两个值的类型不相等就会把两个值的类型转为同一类型进行对比。

2、MD5对比缺陷

进行hash加密出来的字符串如存在0e开头进行弱比较的话会直接判定为true,

即MD5(QNKCDZO)==MD5(240610708)进行“==”若比较时,返回的结果会为真,因为md5值都是0e开头

QNKCDZO

MD5:0e830400451993494058024219903391

240610708

MD5:0e462097431906509019562988736854

s878926199a

MD5:0e545993274517709034328855841020

s155964671a

MD5:0e342768416822451524974117254469

s214587387a

MD5:0e848240448830537924465865611904

s214587387a

MD5:0e848240448830537924465865611904

s878926199a

MD5:0e545993274517709034328855841020

s1091221200a

MD5:0e940624217856561557816327384675

s1885207154a

MD5:0e509367213418206700842008763514

3 、函数strcmp类型比较缺陷

低版本php的strcmp()函数比较的是字符串类型,如果强行传入其他类型参数,会出错,出错后返回值0,正是利用这点进行绕过

4、函数Bool类型比较缺陷

在使用 json_decode() 函数或 unserialize() 函数时,部分结构被解释成 bool 类型,只有true和false也会造成缺陷,运行结果超出研发人员的预期

正常验证思路

绕过思路

正常验证思路

绕过思路

5、函数switch 类型比较缺陷

当在switch中使用case判断数字时,switch会将参数转换为int类型(整数)计算

6、函数in_array数组比较缺陷

当使用in_array()或array_search()函数时,如果第三个参数没有设置为true,则in_array()或array_search()将使用松散比较(弱比较)来判断

7、===数组比较缺陷

注意此时遇到的是 “===” ,这个是强比较,先比较类型,再比较数值;不过也不是代表无从下手,也是存在绕过的可能性的,在md5()函数传入数组时会报错返回NULL,当变量都导致报错返回NULL时就能使使得条件成立。

二、案例:

CTF题目:

https://ctf.bugku.com/challenges/detail/id/72.html

https://ctf.bugku.com/challenges/detail/id/94.html

三、代码审CMS:

https://mp.weixin.qq.com/s/k1hRg7cmRwwJJyyX04Ipmg


http://www.kler.cn/a/468957.html

相关文章:

  • 【微服务】3、配置管理
  • web实操9——session
  • 【2025最新计算机毕业设计】基于SpringBoot+Vue智慧养老医护系统(高质量源码,提供文档,免费部署到本地)【提供源码+答辩PPT+文档+项目部署】
  • 网络安全抓包
  • salesforce 可以为同一个简档的同一个 recordtype 的对象设置多种页面布局吗
  • 苍穹外卖 项目记录 day03
  • windows中硬件加速gpu计划开启cpu的使用率居高不下
  • 远程命令执行之基本介绍
  • SpringMVC进阶(自定义拦截器以及异常处理)
  • 【Leetcode】2241. 设计一个 ATM 机器
  • 无人机各大应用场景详解
  • c#集合详解-Dictionary、List、Queue、Stack等
  • 前缀和与差分专题
  • 继承(4)
  • OpenLinkSaas使用手册-待办事项和通知中心
  • 用opencv实现像素统计
  • 代码随想录算法训练营第二十四天-回溯算法-90. 子集II
  • 【Vaadin flow 实战】第2讲-深入理解vaadin flow技术路线原理
  • TensorFlow深度学习实战(3)——深度学习中常用激活函数详解
  • 产品线上交付阶段出现的两次显著Bug分析
  • css 关于flex布局中子元素的属性flex
  • 服务器开发 的设计模式(Design Patterns)核心知识
  • 出现 Error during query execution: StatementCallback; bad SQL grammar 解决方法
  • windows C#-确定字符串是否表示数值
  • 【信息系统项目管理师】高分论文:论信息系统项目的风险管理(资金管控系统)
  • Go语言的 的集合框架(Collections Framework)基础知识