首先我们先对目标靶机进行一个目录扫描

因为我们已经知道了目标靶机的ip,所以我们略过。

先进行目录扫描,目录扫描结果如下:

Target2-镜靶机取Flag过程

其中我们可以明显看到有一个名叫.index.php.swp的目录。

这个目录是vim软件编辑留下的遗留文件。

但是我们可以先选择对该目标机的80端口进行查看,发现目标端口是个登录页面

Target2-镜靶机取Flag过程

于是在这里的时候我们也可以看到下面还有一个商品界面,这里我们可以选择使用布尔盲注,但是我们这里测试了一下

'admin -- 

密码随意地随便输入什么,就可以进入到里面的文件上传界面了

Target2-镜靶机取Flag过程
Target2-镜靶机取Flag过程

这里我们就可以进行一个文件上传了。

在这里我们可以上传一个.htaccess的文件,这个htaccess文件的最大作用就是可以把其他文件格式交给php处理器执行,我们就可以成功的通过只有txt和jpg这种格式的上传通道。

然后我们的文件内容如下

Target2-镜靶机取Flag过程

在我们上传之后,我们可以再进行上传一个木马文件,我把他的名字直接取名为木马,内容如图

Target2-镜靶机取Flag过程

于是我们可以直接去web端口进行执行,执行了之后就像是如图一样,可以对我们输入的命令进行回显

Target2-镜靶机取Flag过程
Target2-镜靶机取Flag过程

就会上图所示了。

然后到达了这里之后我们可以对我们可以谈差的区域进行一番寻找,我们能看到一个很有意思的文件。

就是env,环境文件。

并且在环境文件中有很有意思的东西,就是mysql的用户以及密码

Target2-镜靶机取Flag过程

在我们拿到用户以及密码之后,我们就可以登录上去尝试一下看看进入数据库之后是什么样的。

Target2-镜靶机取Flag过程

但是在这里我们不能用ssl连接上去,我们必须跳过ssl,就是上图中的skipssl。

并且我们从中可以到处寻找的时候可以看到一个user的分类,我们只要进去了,就能看到一个名为admin的用户,而且他的密码就是我们寻找的flag1

Target2-镜靶机取Flag过程

我们便拿到了flag1.

那么接下来我们要寻找flag2

在flag 2的寻找过程就比flag1要困难许多,因为要活的flag2我们需要进行提权,提权的思路我们想的是给共享库添加函数,eval函数我们将之写入到数据库里面去,然后使用system执行系统命令。

我们在这里需要16进制文件并且我们需要,CREATE FUNCTION 注册

操作过程可以说是

mysql -h 192.168.104.104 -u root -p'Kp7mXz2wRn9sLqDf' --skip-ssl \
  -e "DROP FUNCTION IF EXISTS sys_exec; DROP FUNCTION IF EXISTS sys_eval;"
我们先对原本的老函数进行清理

xxd -p /tmp/lib_mysqludf_sys_64.so | tr -d '\n' > /tmp/udf64_hex.txt
UDF_HEX=$(cat /tmp/udf64_hex.txt)
然后执行这个指令来转化为16进制

随后我们需要把udf64写入到mysql里

mysql -h 172.16.11.28 -u root -p'Kp7mXz2wRn9sLqDf' --skip-ssl \
-e "SELECT UNHEX('$UDF_HEX') INTO DUMPFILE '/usr/lib64/mysql/plugin/udf_final.so';"

最后在进行注册函数。

Target2-镜靶机取Flag过程

我们就可以发现执行成功。

在执行成功之后我们就可以去查看flag,然后就发现了其中的flag2

Target2-镜靶机取Flag过程

拿到2了之后,我们便是向3进攻

3的话我们可以用mysql代理出来

Target2-镜靶机取Flag过程

在其中我们也可以通过这个方式去查看到flag2

Target2-镜靶机取Flag过程

然后我们可以使用一个脚本,用这个脚本创建一个新容器,把宿主机的根目录 / 挂载到新容器的 /host

然后再另一台新的卡里中开上监听

就会收到原本机器的root权限的shell了,我们就能直接对flag3进行查看了

Target2-镜靶机取Flag过程


核桃大魔王