SQL注入

SQL注入简介

SQL注入是什么?
SQL注入就是将我们的输入信息通过后端语言被数据库执行,从而获得我们想要得到的敏感信息。
SQL注入有哪些?
SQL注入可以分为很多种,但都是更具其位置来划分的,根本上来说就分为俩种字符型和数字型。

SQL注入获取原理

SQL注入的原理就是数据库处理我们的输入从而获得敏感信息。

  • 那么我们输入的SQL语句就要被数据库执行,数据库有一个很好的关建字union,该关键字作用是将俩个或更多个查询结果组合为单个结果集。union前半部分是一个我们特意设定的空值,后半部分是我们想要被执行的数据库语言(只有前半部分的值为空,我们才可以看到后半部分的输出结果)。
  • 但是union关键字有俩个限制:1.所查询的列数必须相同 2.数据类型必须兼容。为了保证所查询列数相同我们需要对前半部分的SQL语句查询字段进行查询,查询有俩种手段 1.order by关键字判断(该关键字原本的作用是将某一列进行排序然后将查询结果返回)通过对order by之后的参数1到…递增直到有错误信息出现则前一个数字就是字段信息。2.union探测字段数,该方法也很简单union后加上nullnull个数不断递增直到有错误信息出现,则前一个null个数就是我们要找的字段数。
  • 字段数找到之后还有一个问题是回显问题,后端传递出的结果未必在HTTP协议上都进行传输,所以我们用select 1,2,3进行一个判断,看一看哪一个位置的数字回显。
  • 最后我们就可以进行我们的敏感信息查询操作了
    接下来是具体步骤。

数字型注入步骤

1.判断后端语句格式(也就是字符型还是数字型)
1':有无错误信息,有则表示存在SQL注入漏洞
1 and 1=1:本语句执行成功继续判断
1 and 1=2:本语句执行成功则是字符型,失败则是数字型
2.查询字段数
步骤2和步骤3在前半部分值为空的情况下操作
order byunion判断
3.查看回显位置
SELECT 1,2,3
4.union查询敏感信息
前提是union之前的部分值是空值,
select database(),version():查询当前数据库以及版本信息;数据库information_schema记录SQL中关于数据库的所有信息,有三个表schemata,tables,columns
select group_concat(schema_name) from information_schema.schemata:查询所有的数据库名称
select group_concat(table_name) from information_schema.tables where table_schema='数据库':查询数据库内包含的表名
select group_concat(column_name) from information_schema.columns where table_name='表名':查询给定表的字段数
数据库中的information_schema
select group_concat(id) from table_name查询表内id列的数据整合成一个字符串返回。
仔细看这些敏感信息查询的语句中都有一个次group_concat()这个词的作用是将查询到的结果做为一个结果整合返回;如果不加该词那么sql会要求返回结果必须是一条,那么我们必须加入limit。limit用法看该文SQL的limit用法

字符型注入步骤

首先是字符型注入判断方法,字符型注入与数字型注入判断的思路基本一样都是 and 1=1或者 and 1=2这样子的。只不过要改成数据类型
1.判断后端语句格式(也就是字符型还是数字型)
1':有无错误信息,有则表示存在SQL注入漏洞
1' and '1'='1:本语句执行成功继续判断
1' and '1'='2:本语句执行失败则是字符型
后续操作与数字型一样只不过要把最后的引号注释掉 我们可以用 # 或者 - -

SQL注入的正常报错和非正常报错

正常的报错:比如用户名或密码输入错误,他会显示你的用户名或者密码输入错误。
非正常报错:SQL语句出现了问题会出现系统的报错,但是这种报错不一定会显示出来。
关于字符转义的问题:后端为了防止SQL注入可能会进行特殊字符的转义处理,这时候的非正常报错就变成了正常报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值