绕过总结

作者 by Yichen / 2023-08-11 / 暂无评论 / 18 个足迹

1.md5

  • 绕过sql,md5(‘ffifdyop’,true)= 'or’6xxx
  • 当raw设置为true时输入 ffifdyop 可以对单引号进行闭合
  • 经过md5编码后返回的原始二进制不是普通的二进制(因为raw为true),而是’or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c 这种。这样的话就会和前面的形成闭合,构成万能密码;
  • 弱类型绕过和强类型绕过

    2.eval

  • 可使用分号构造出多条语句

    3.ereg

  • 存在%00截断

    4.strcmp

  • 影响版本 PHP5.3 及以下

无法处理数组并将return 0

5.ascii

  • 传进去的是字符串只会截取第一个字符进行处理

    6.curl_setopt

  • 存在可能的SSRF

    7.preg_replace

  • 第二个参数使用 /e模式导致代码执行

    8.urldecode

  • url二次编码绕过

    9.include

  • include函数有这么一个神奇的功能:若以字符‘/’分隔(而且不计个数),若是在前面的字符串所代表的文件无法被PHP找到,则PHP会自动包含‘/’后面的文件——注意是最后一个‘/’。(存疑)

    10.__wakeup

  • 影响版本:
  • · PHP before 5.6.25
  • · 7.x before 7.0.10
  • 反序列化时,如果表示对象属性个数的值大于真实的属性个数时就会跳过__wakeup( )的执行

    11.open_basedir

  • PHP5.x
  • 可绕过并进行任意文件读取(两种方法)

    12.in_array()

  • 第三个参数如果设置为FALSE,就存在注入点

    13.spl_autoload_register

  • 配合文件上传可以getshell

    14.create_function()

  • 代码注入

    15.file_get_contents

  • 经常用伪协议绕过

    16.mt_rand

  • SEED相关的安全性问题

    17.sprintf

  • 格式化字符串漏洞

    18.parse_url

  • 可用于绕过某些过滤

    19.preg_match

  1. 可绕过进行代码执行,见P神的文章
  2. 通过pre_match函数的资源消耗来绕过,因为pre_match在匹配的时候会消耗较大的资源,并且默认存在贪婪匹配,所以通过喂一个超长的字符串去给pre_match吃,导致pre_match消耗大量资源从而导致php超时,后面的php语句就不会执行。
  3. 回溯次数上限pcre.backtrack_limit相关的安全问题
  4. %0A,%0D 参数污染相关问题

    20.intval

  • 类型转换上限

    21.Session绕过

  • 删除cookie,没有cookie中的SESSIONID就找不到对应的session文件,相应的$_SESSION[‘var’]就为NULL,传参NULL即可匹配。

    22.file_put_contents

  • 第二个参数写入数据如果是数组的话,会被连接起来写入文件。但是这样就能绕过前面的过滤。

    23.json_encode/decode

  • json_encode:将数组转换为json,只支持utf8格式的数据。json_encode 会自动将utf8格式的汉字转为unicode格式。gbk格式的数据只能输出NULL。
  • json_decode:可以解析unicode编码格式的字符串,官方说明只能解析utf-8编码的数据。 英文字符不区分编码格式,encode decode都能解析。
  • json_decode:可以当作mysql的分隔符: 空格 + \f \n \r \t \u0009 \u000A \u000B \u000C \u000D \u0020 \u002B

独特见解