ctfshow——PHP特性

2024-01-03 11:33:06

文章目录

web 89

在这里插入图片描述

使用人工分配 ID 键的数值型数组绕过preg_match.

在这里插入图片描述

两个函数:

  • preg_match():执行正则表达式,进行字符串过滤。preg_match函数用法正则表达式语法[0-9]匹配0-9之间的所有字符。/相当于一个分隔符,/../之间的内容就是正则的语法。绕过方法:变量num为人工分配 ID 键的数值型数组,preg_match()就会失效。如num[]=1,num[0]=1
  • intval():将变量的值默认转化为十进制。intval函数用法绕过方法:可以使用==的特性,如+16、16.0;或者进制转换后,左右变量也相等。

    注意:

    1. 使用array()类型的数组,intval遇到空数组为0,非空数组为1.
      在这里插入图片描述
    2. 使用人工分配 ID 键的数值型数组,intval遇到空数组为0,非空数组为1。
      在这里插入图片描述

web 90

在这里插入图片描述
解释

  • ===强类型对比,可以使用进制转换进行绕过。补充==:弱类型对比,可以添加+、-符号或者.0进行绕过。

  • intval($num,0)代表通过检测变量num的格式来决定使用哪个进制。

    • 0x0X为前缀,使用16进制;
    • 0为前缀,使用8进制;
    • 使用10进制。在这里插入图片描述

    intval()处理字符串时,其实跟整形一样。

    另外,intval()函数如果$base为0,则$var中存在字母的话遇到字母就停止读取,传入4476a会将后面的a丢弃,比较前面的.

  • GET传参接收的就是字符串数据。GET传参和POST传参,其实上传的都是HTML表单,HTML 表单并不传递整数、浮点数或者布尔值,它们只传递字符串。php类型比较表

  • php中,单引号和双引号包裹的,其实都是字符串,只是当其中包含变量时,单引号不会解释变量,双引号会解释变量。

文章来源:https://blog.csdn.net/qq_55202378/article/details/135355498
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。