sql注入_1-7_绕过注入

一.sql注入绕过概念

1.为什么要绕过? 因为有时候存在注入,但是很多符号被过滤掉, 所以我们不的不使用绕过手段。

2.绕过就是虽然我们注入时使用的字符串或者符号被过滤,但我们依然可以使他报错,并且报出他的数据库表名等

二.sql注入绕过手段

1.注释符
通常是用来注释掉id=1’ 这个单引号,或者字符串

2.单行注释
- -+(通常直接在浏览器拼接) 或 --空格(通常在插件中使用) 或#

列1:
?id=1’ --+ 就起到注释单引号的作用
同理,–空格和#也是一样

演变1:
?id=-1’ union select 1,2,3 --+ 同样是起到闭合前面单引号的作用

演变2:
如果过滤了注释符怎么办了?
答案:我们可以使用单引号闭合前面的单引号,这样就不会报错
可以使用‘ or 1=’1
?id=1’ or 1=’1 返回正常
?id=1’ or 1=’2 返回报错

3.这时候我们知道了
哦!!!
注释符在sql注入中多是起到闭合单引号,和注释单引号的作用

如下图1,2总结
在这里插入图片描述
在这里插入图片描述
设想如果程序员过滤了
and or 和select等我们注入的字符怎么办?

方法
1.MySQL大小写不铭感
所以我们可以大小写绕过
比如:sELEct
2.吧值或参数转为16进制,或者url编码
3.吧and 替换为 && ,吧or替换为 ||
4.内联注释和多行注释
可以插入字符串等

如下图总结
在这里插入图片描述
5.双写绕过
比如:
oorr
当过滤了or时
中间那个or就不在了
但是还是剩下一个or
哈哈,所以依然可以绕过

如下图总结
在这里插入图片描述
当发现过滤一些参数时
我们可以用sqlma --hex
可以绕过部分

在这里插入图片描述

6.最后我们来看看一个过滤函数
第一个参数:过滤的变量值
第二个参数:需要替换成为的变量
第三个参数:在此参数中只要涵有第一个参数的值都过滤为第二参数我们改变的值

可以看到
在id中吧含有# ,-- ,“”的全部过滤为空

在这里插入图片描述

三.sql绕过演示

打开less-11
id=1返回正常

在这里插入图片描述
加’ 报错并且推出sql语句
在这里插入图片描述
使用–空格
发现无法注释掉前面的单引号,说明过滤了-- 和空格

在这里插入图片描述
使用or 1=‘1 闭合前面的单引号返回正常
再次证明他确实过滤了-- 空格

在这里插入图片描述
因为空格别过滤
但是我们用+代替
但是要注意+和url编码字符要在浏览器中使用,不要在插件,容易出错

如下图
在这里插入图片描述

的到了数据库名
在这里插入图片描述

我们来看看源码
确实–被过滤了
难怪

在这里插入图片描述

接着下一个案例
less-25
直接单引号报错,分析出SQL语句

在这里插入图片描述
输入and 1=‘1
发现没有显示
说明and和or肯定被过滤了

在这里插入图片描述

使用||绕过
成功

在这里插入图片描述
也可以双写绕过
同样成功

在这里插入图片描述

看看源码,
确实过滤了and
和or

在这里插入图片描述
使用联合查询
爆他字段
接着就可以进行其他爆破,就不演示了,因为sql注入发现注入点,就可以使用sqlmap直接探测或使用脚本探测的。

在这里插入图片描述

打开less-26
加”
报错,推出SQL语句

在这里插入图片描述
如图操作
发现原语句空格不在了
由此推断过滤了空格

在这里插入图片描述

我们使用%0a代替空格
返回正常

在这里插入图片描述

四.总结

1.双写绕过
2.大小写混合绕过
3.|| 和&&绕过
4.空格绕过(%0a)
5.内联绕过
6.注释符(or 1=’1)
7.注意:当使用url编码和+时在浏览器导航使用,不要在插件使用

发布了15 篇原创文章 · 获赞 2 · 访问量 2422

猜你喜欢

转载自blog.csdn.net/weixin_44110913/article/details/103467381
今日推荐