网络安全学习笔记——ByPass绕过

bypass即绕过,一般绕过是绕过防火墙,绕过waf,绕过本地的360,绕过网站的看门狗等

waf检测机制其实很简单,核心就是正则匹配,虽然说还有字符串强行匹配,还有什么语义解析,但是实际上还是正则居多

所有的网站都会与数据库交互,但不一定所有的网站都存在SQL注入漏洞,因为可以对输入的内容进行过滤特殊字符,关键字,空格等,一般都可以使用别的字符代替

过滤空格时的绕过

  • #绕过空格——注释时可以使用#,但在hackbar里面执行可能会不成功,因为#是URL里面的特殊字符,代表注释,是给浏览器用了,不会到服务端去,此时应当使用其URL编码%23,GET类型下,浏览器会现对GET请求进行一次解码,服务端对POST不会进行URL解码,URL和POST没有关系——因为此时不是地址栏
  • /**/绕过空格——在逻辑语句and 1=1 时,使用的就是单纯的空格,此时不能使用#了,而要在其中使用 /**/ ——MySQL自定义的注释符,可以代替空格,此时语句会正常执行
  • 括号绕过空格——把需要加空格的地方是用括号括起来,也就是说,把注入的逻辑语句当作一个函数,如and(1=2),但使用中,如果语句很长的话,加小括号的过程会非常麻烦,也有些语法是不支持小括号的,加了的话可能会影响执行
  • 双写绕过空格——使用两个空格(双写)绕过对空格的过滤
  • %09绕过空格——php语言支持把%09当作一个小括号来执行,URL解码之后是一串空格,大概相当于一个tab
  • %0a绕过空格——换行,使用中有可能可以代替空格,MySQL语句也支持解析换行
  • + 绕过空格——在某些特殊场景下,也可以代替空格,可以一试——在URL里面代表空格,或者%2B
  • %a0绕过空格 —— 不可见字符串就是菱方块里面一个问号

URL编码——防止歧义,因为浏览器会编码,服务端会进行解码

过滤引号时的绕过

使用hex编码进行绕过,MySQL支持解析16进制,可使用引号的hex编码绕过对引号的过滤——但使用时,要将引号及其内部的所有内容一起转化为16进制

HEX编码、Base64编码_愿凌飞的博客-CSDN博客

过滤逗号时的绕过

  • 盲注中使用 “substr(0,1),” 时使用from...for绕过——可以使用 substr(from 0 for 1) 进行绕过
  • limit的逗号被过滤时,可以使用offset关键字——limit 2,1 等价于 limit 1 offset 2
  • 使用join关键字来绕过——union select 1,2,3 等价于 union select * from (select 1)a join (select 2)b join(select 3)c

过滤大小于符号时的过滤

  • 盲注时,< > 被过滤时,可以使用 = 来注入——如 and ascii(substr(database(),1,1)=64 等价于 and greatest(ascii(substr(database(),0,1)),64)=64,least() 函数同理
  • 也可使用between a and b ——  范围在a-b之间(id between 1 and 1 与 id = 1 效果相同)

过滤注释符时的绕过

注释符的绕过,可以通过使用单引号闭合原本传参的后引号,使前引号与注入的引号正常传参,后引号作为一个普通字符串,中间注入所需的语句进行查询及提权
单引号必须是在逻辑语句的中间————and 1='1

如:id=1' union select 1,2,'3

http://192.168.138.98/sqlilabs/Less-1/?id=1' and 1='1

单引号必须是在逻辑语句的中间————and 1='1,也可以套娃id=1' and 1=1 and '1

使用 order by 的时候,则不能这样使用单引号注释掉
但是可以使用Union联合盲猜
如:?id=1' union select 1,2,'3————猜一下有没有3列


00截断也可以直接断开后面的内容
http://192.168.138.98/sqlilabs/Less-1/?id=1' and 1=1;%00

过滤等号时的绕过

  • 可以使用 like 代替 = 直接绕过——MySQL查询语句的模糊查询
  • 使用大小于号来绕过,id > 1 and id < 3 与 id = 1 效果一样
  • <>等价于!= 所以在前面加一个!结果就是等号 !(id<>1) 与 id = 1 效果一样

还可以使用正则匹配来绕过

过滤关键字的绕过

  • 正则匹配到关键字之后置空,乱序双写即可—— 如过滤的是and关键字,可以使用anandd来绕过
  • 大小写绕过——使用大小写混写绕过
  • 中间加/**/绕过——如an/**/d绕过,极少情况下可以成功绕过

过滤使用的函数为preg_replace(pattern:'xxx/i',replacement:"xxxx")函数——用于作正则匹配和过滤限制,当检测的特征对象参数中含有 i 时,则会检测大小写

过滤函数的原理

按照顺序一个字母一个字母的查询,然后匹配,如果遇到and,就换为空格,前两个字母连查,没有遇见and,放过,然后遇见完整的and,置为空,然后查到d——不是and,所以放过,此时的d和前两个连查的an一起组成了注入关键字and————在cipe考试中较为常见

此外还可以进行堆叠查询:攻击者可以尝试通过在一个SQL注入点执行多个查询语句,从而执行多个查询操作或执行恶意操作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nosery

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值