Vulnhub靶场 Billu_b0x 练习


0x00 准备


下载链接:https://download.vulnhub.com/dc/DC-6.zip

介绍:

This Virtual machine is using ubuntu (32 bit)

Other packages used: -

  • PHP
  • Apache
  • MySQL

This virtual machine is having medium difficulty level with tricks.

One need to break into VM using web application and from there escalate privileges to gain root access

For any query ping me at https://twitter.com/IndiShell1046

Enjoy the machine



0x01 主机信息收集


kali的IP地址:192.168.119.128,eth0

发现目标主机IP:netdiscover -i eth0 -r 192.168.119.0/24

目标主机IP:192.168.119.133

探测目标主机的开放端口,执行命令:nmap -sV -p 1-65535 -A 192.168.119.133
在这里插入图片描述



开放了22端口(openssh5.9),80端口(apache2.2.22)。

直接在浏览器访问80端口:
在这里插入图片描述



0x02 站点信息收集


这个靶机的介绍里面有说明这是个apache+php+mysql的站点。利用插件也可以知道这是个php站点。

看一下站点的目录结构:dirsearch -u 192.168.119.133
在这里插入图片描述



依次访问一下发现几个看起来比较有用的地方,add是一个上传图片的地方:
在这里插入图片描述



images里面是站点用到的一些图片:
在这里插入图片描述



index页面就是前面看到的首页了,有username和password的输入框。

phpmy是phpmyadmin的登录页面:
在这里插入图片描述



test页面是一个提示,利用file参数提供文件路径:
在这里插入图片描述



in页面是phpinfo的页面:
在这里插入图片描述



0x03 漏洞查找与利用


根据上面查找出来的信息,可以尝试三个思路。一个是首页的sql注入,另一个是文件上传,还有一个是文件包含。

1. 文件包含


前面在test页面有个提示,可以用file参数提供文件路径。

访问:192.168.119.133/test?file=/etc/passwd

访问:192.168.119.133/test?file=/etc/passwd/test?file=…/…/…/…/…/…/…/etc/passwd

都是一样的提示,file参数是空的。

考虑用POST方式提交:
在这里插入图片描述



可以看到读取文件成功。
(这里用POST方式提交的时候也可以用curl命令:curl -d "file=/etc/passwd" http://192.168.119.133/test

尝试读取网站的其他文件,前面扫描出来的目录可以都试一下,例如读取add.php:
在这里插入图片描述



在c.php中看到了数据库的用户名是billu,密码是b0x_billu,默认数据库是ica_lab:
在这里插入图片描述



在index.php中看到了登录的数据库查询语句:select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\’ ,并且使用了str_replace函数移除了用户名和密码中包含的单引号。
在这里插入图片描述



在test.php中看到源码。这段代码的大体意思是通过post给file参数提供一个文件路径,如果这个文件存在,就设置相关的http信息来下载文件,如果文件不存在或者file参数没有值,则输出一段提示信息:
在这里插入图片描述



2. SQL注入


在上一步文件包含的时候查看了index页面的源代码,发现了sql查询语句,单数输入的单引号被过滤了:

select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\’

只是单引号被过滤了,#\还没被过滤。思路就是用#注释掉最后一个单引号,中间的单引号用反斜杠转义一下。

where pass=‘123\’ and uname=’123#’

这样的话就变成了查询 pass是 123\’ and uname= 的情况。



数据库中应该没有这样的password。那就再后面拼接一个or,所以构造下面这样的查询语句:

where pass=‘123\’ and uname=’ or 1=1 #’

上面这个语句的意思就是查询pass是123\’ and uname= 或者 1=1。这时候应该查询成功了。


所以构造的用户名是: or 1=1 #
密码是:123\
在这里插入图片描述



登录成功以后跳转到panle页面:
在这里插入图片描述



3. 文件上传


点击continue以后,会出现用户名和image。
在这里插入图片描述



点击 add user,continue以后会出现上传文件的地方。上传一个非图片的文件后会提示只能上传图片类的文件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值