根据官方给的信息本靶机一共有5个flag,分别为:Croatia, France, Italy, Laos, Phillippines。本次实验将带大家一起获取这5面旗帜,接下来请跟随我的思路来一起来学习吧。
进入操作机,nmap神器开路,对 IP 地址为 192.168.12.20 的主机进行端口扫描,扫描范围是 TCP 的 1 到 65535 号端口,跳过 ping 操作,并尝试识别出每个开放端口上运行的服务版本。
nmap -p 1-65535 -Pn -sV 192.168.12.20
输入指令,等待扫描。
扫描完毕,可以看见目标主机开放了以下端口。
接下来进入80端口, 但是发现并没有url信息。
需要使用目录扫描工具获取目录信息,使用 dirb
工具进行目录爬取是一种常见的方法,用于发现Web服务器上可能存在的隐藏资源或目录。dirb
通过向指定的URL发送HTTP请求,并检查服务器的响应,从而推断出服务器上可能存在的目录和文件。
dirb http://192.168.12.20/ /usr/share/dirb/wordlists/big.txt
扫描完毕, 访问admin2:http://192.168.12.20/admin2/,发现是个登录界面,需要密码。
查看页面源代码,看到页面调用了js/md5.min.js,这里面是一些函数。真正验证密码的js代码在页面源代码下面。
将<script>代码块中的代码复制出来,然后手动调整一下,格式如下:
从代码中可以看到是一个正向验证密码的算法,逆向运算可以获得:(1079950212331060÷1988+234562221224)-4469 =777796730000,从这个算式中可以看出来,想让输入的密码为77779673,使用这个密码进行登录。
密码正确,获取第一个flag:Italy。
依次尝试利用其他端口,发现15020端口是https协议,使用浏览器访问这个端口。 点击页面中的Advanced按钮,页面会提示警告的详情,其中有查看证书的按钮。
点击view Certificate按钮,查看证书信息。
在证书界面看到了flag2。
接下来点击浏览器中警告界面中的Accept the Risk an Continue 按钮。界面和80端口的界面很相似。
和80端口一样的思路,使用dirb工具扫描15020的目录。
dirb https://192.168.12.20:15020 /usr/share/dirb/wordlists/big.txt
发现这个端口存在/blog 与/vault 2个目录,访问/blog目录。
进入blog页面。
检查源码,发现有一个被注释的url:download.php 访问该url,提示缺少一个image参数,并且需要提供image的路径。但是从提示中并不能判断image参数是如何提交的,可以分别使用get和post方法提交,使用get请求,发现并无效果。
先使用get方法尝试,但并无效果,再使用post方法,进入检查页面。post数据中填写image=/etc/passwd。然后点击Execution点击发送请求。浏览器中提示了保存文件,选择Save File进行保存文件。
找到文件保存位置查看文件内容。 从passwd文件中可以发现存在kevin/oana/root三个系统中的用户,在网站的界面中发现有一条评论。
从passwd文件中可知系统中存在kevin这个用户,尝试使用文件包含漏洞读取kevin目录下flag.txt得到第三个flag。请求后可以得到第三个flag。
到这里就已经获取了3个flag,但是由于篇幅问题,剩下两个flag下期更新。