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

20、WEB攻防——PHP特性缺陷对比函数CTF考点CMS审计实例

文章目录

  • 一、PHP常用过滤函数:
    • 1.1 `==`与`===`
    • 1.2 md5
    • 1.3 intval
    • 1.4 strpos
    • 1.5 in_array
    • 1.6 preg_match
    • 1.7 str_replace
  • CTFshow演示
  • 三、参考资料

在这里插入图片描述

一、PHP常用过滤函数:

1.1 =====

==:弱类型对比(不考虑数据类型),甚至可以理解为只要右边变量的前几个字符或数字等于左边的变量,==就成立,且不受符号影响。===:强类型对比(考虑数据类型),也就是说左右两边的值要完全一样才会满足===
在这里插入图片描述

1.2 md5

  • 使用md5()==进行变量比较
    md5 0e漏洞:就是说在使用md5()==进行变量比较的时候,只要左右两边的字符串经过md5()加密后,都是以0e开头的字符串,那么左右两边将会相等。
    在这里插入图片描述

    php甚至会有oe漏洞,只有两边的变量(整型)以oe开头,php也会判断左右两边相等。
    在这里插入图片描述
    在这里插入图片描述

  • 当使用md5()===进行变量对比的时候, 使用数组可以绕过md5()函数的检测。
    在这里插入图片描述

1.3 intval

函数作用:将变量的值默认转化为十进制。intval
应用地方:比如sql注入时,通常使用and 1=1来判断注入类型是数字型还是字符型,后端使用intval()函数将会使and 1=1失效。
在这里插入图片描述
缺陷:可以使用==的特性,如+16、16.0;或者进制转换后,左右变量也相等。intval绕过 在这里插入图片描述 在这里插入图片描述

1.4 strpos

函数语法:第一个参数为要搜索的字符串,第二个参数为要查找的子串,第三个参数为从哪儿开始查找。

%oa(换行)会屏蔽要搜索的子串。

在这里插入图片描述
在这里插入图片描述

过滤字符串起始不能为0
在这里插入图片描述
在这里插入图片描述

1.5 in_array

语法:
在这里插入图片描述

不设置strict参数,就相当于==进行判断。

在这里插入图片描述

在这里插入图片描述

1.6 preg_match

漏洞:preg_match只能处理字符串,如果不按规定传一个字符串,通常传一个数组进入,就会使preg_match失效,从而绕过该函数的检测。
在这里插入图片描述

1.7 str_replace

作用:替换字符串中的一些字符(区分大小写)。
在这里插入图片描述
漏洞:无法迭代过滤,只过滤一次
在这里插入图片描述

CTFshow演示

intval函数是取整,同时第二个参数为0表示通过检测第一个参数的格式来决定使用的进制。这里我们要做的是不输入4476,但是要拿到flag。可直接在4476后面加小数或者使用进制转换
在这里插入图片描述
在这里插入图片描述

三、参考资料

红日安全php项目

http://www.lryc.cn/news/262926.html

相关文章:

  • 互换数组的两个轴 numpy.swapaxes()
  • 金蝶云星空修改业务对象标识
  • 【PHP入门】2.1-运算符
  • 【Hive】——DML
  • 【Spring教程31】SSM框架整合实战:从零开始学习SSM整合配置,如何编写Mybatis SpringMVC JDBC Spring配置类
  • Tailwind CSS 入门
  • 如何在简历中解释就业空白
  • 【计算机网络】TCP协议——2.连接管理(三次握手,四次挥手)
  • 螺丝厂家:如何根据您的需求找到合适您的紧固件
  • 企业数字化转型进入深海区:生成式AI时代下如何制定数据战略
  • html行内元素和块级元素的区别?
  • ResNet 原论文及原作者讲解
  • liteflow规则引擎 执行Groovy脚本
  • GZ015 机器人系统集成应用技术样题5-学生赛
  • Spark编程实验二:RDD编程初级实践
  • CleanMyMac X这一款mac电脑清理垃圾文件软件好用吗?
  • 四通道 DMOS 全桥驱动MS35631N/MS35631
  • JWT令牌的作用和生成
  • elementui el-pagination分页组件查询的时候当前页不更新
  • C++——C++11(1)
  • CoPilot究竟如何使用?
  • 前端(三)
  • Maven知识
  • 美颜SDK是什么?视频美颜SDK在直播平台中的集成与接入教程详解
  • CSS基础面试题
  • L1-028 判断素数
  • Scala多线程爬虫程序的数据可视化与分析实践
  • YOLOv8加入顶会ICLR2022MobileViT模块
  • 「数据结构」二叉树1
  • 栈(C语言版)