ctfshow——PHP特性

文章目录

  • web 89
  • web 90

web 89

ctfshow——PHP特性_第1张图片

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

ctfshow——PHP特性_第2张图片

两个函数:

  • 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。
      ctfshow——PHP特性_第3张图片

web 90

ctfshow——PHP特性_第4张图片
解释

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

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

    • 0x0X为前缀,使用16进制;
    • 0为前缀,使用8进制;
    • 使用10进制。ctfshow——PHP特性_第5张图片

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

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

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

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

你可能感兴趣的:(渗透测试实践,php,开发语言)