SQL注入

SQL(注入、绕过、修复)

一、SQL有很多种,如报错注入、盲注、union注入等。
SQL注入的原理
SQL注入漏洞的产生需要满足以下两个条件。
●参数用户可控:前端传给后端的参数内容是用户可以控制的。
●参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询

在MySQL 5.0版本之后,MySQL默认在数据库中存放一
个"information_ schema"的数据库,在该库中,读者需要记住三三个表名,分别是
SCHEMATA、TABLES和COLUMNS。
我们需要记住该表中记录数据库库名、表名和字段名的字段名为
TABLE_SCHEMATA、TABLE_SCHEMA和COLUMN_NAME。
在不知道任何条件时,
SELECT要查询的字段名FROM库名.表名
在知道一条已知条件时,
SELECT要查询的字段名FROM库名.表名WHERE已知条件的字段名=’已知条件值’
在知道两条已知条件时,语句如下所示。
SELECT要查询的字段名FROM库名.表名WHERE已知条件1的字段名='已
知条件1的值’AND已知条件2的字段名=’已知条件2的值’
2.limit的用法
limit的使用格式为limit m, n,其中m是指记录开始的位置,从0开始,表示第一条记录; n是指取n条记录。

●database () :当前网站使用的数据库。
●version () :当前MySQL的版本。
●user () :当前MySQL的用户。
SQL注入绕过攻击
大小写注入绕过技术
访问id=1’,发现页面报出MySQL错误,当访问id=1 and 1=1时,页面返回"no hack" ,显然是被拦截了,说明有关键词被过滤。使用关键字大小写的方式尝试绕过,如And 1=1 (任意字母大小写都可以,如aNd 1=1, AND 1=1等),可以看到访问id=1 And 1= 1时页面返回与id= 1相同的结果,访问id=1 And 1= 2时页面返回与id=1不同的结果,得出存在SQL注入漏洞的结论,
order by要是被拦截的了 可是使用order改横Order 若是by被拦截,也可以使用大写
如果关键字被拦截,可以尝试大写

双写绕过技术
访问id=1’,发现页面报出MySQL错误,接着访问id=1 and 1=1,页面依然报出MySQL的错误,但是从错误信息中可以看出,输入的and 1=1变成了1=1
在这里插入图片描述
得知and被过滤,这里可以尝试双鞋的绕过,如anandd 1=1,当and被过滤后,anandd变成了and,所以这时传入数据库的语句是and 1=1,成功执行并返回正常页面。
在这里插入图片描述
接着,输入aandnd 1=2,返回错误信息,判断页面参数存在SQL注入漏洞。当访问id=1 order by 3时,MySQL的错误信息为"der by 3”,所以这里并没有过滤order整个单词,而是仅过滤or,因此只需要双写or即可,
在这里插入图片描述
在这里插入图片描述

编码注入绕过技术
访问id=1’,发现页面报出MySQL错误,接着访问id=1 and 1=1和id=1 and
1=2时, 发现关键字and被拦截。 尝试使用把and进行URL全编码的方式绕过拦截。由于服务器会
自动对URL进行一次URL解码, 所以需要把关键词编码两次
后面的注入过程与Union注入的一致,只需判断过滤的关键词,并经过两次URL全编码即可。

内联注释绕过注入
访问id=1 and 1= 1和id=1 and1= 2时,发现页面提示"no hack" ,即关键字被拦截。尝试使用内联注释绕过。内联注释的相关内容在介绍MySQL的知识点时讲解过。访问id=1/*! and*/1=1时, 页面返回与id= 1相同的结果;访问id=1/*! and*/1=2时,页面返回与id= 1不同的结果,
后面注入过程和union注入的一样

4.3.5 SQL注入修复建议
常用的SQL注入漏洞的修复方法有两种。
1.过滤危险字符
多数CMS都采用过滤危险字符的方式,例如,采用正则表达式匹配union、sleep、load file等关键字,如果匹配到,则退出程序。例如80sec的防注入代码
2.使用预编译语句
其实使用PDO预编译语句,需要注意的是,不要将变量直接拼接到PDO语句中,而是使用占位符进行数据库的增加、删除、修改、查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值