网易首页 > 网易号 > 正文 申请入驻

Game-of-Thrones-CTF-1靶机完全攻略

0
分享至

0×00 说明

虚拟机地址:https://www.vulnhub.com/entry/game-of-thrones-ctf-1,201/

这个靶机的难度较高,过程并不是一气呵成,所以经过了多次更换网络和IP的过程,ip略有混乱,请见谅。

之前这个靶机在这里出现过,但是我认为文中有很多疏漏和不合逻辑的地方,因为这个靶机完成度相当高,所有的破解方法均有提示,并不存在需要特别大的脑洞猜想的地方,所以我决定写一篇完全可以复现的秘籍。

0×01 信息获取

首先用nmap扫描,Ping scan :nmap -sn 192.168.50.0/22 ,探测到虚拟机ip为192.168.50.215,再使用

nmap -p 1-65535 -T4 -A -v 192.168.50.215 ,探测所有tcp端口,发现如下信息:

信息比较多的端口是80端口,访问一下,主题曲响起,讲究!

查看一下robots.txt文件:

分别是:

http://192.168.50.215/the-tree/

http://192.168.50.215/secret-island/

http://192.168.50.215/direct-access-to-kings-landing/

依次访问,从secret-island中发现了指导性的信息:

成功得到地图!

上面记录了本次游戏的关键点和目标,与冰与火之歌的各国相对应,讲究!

除了常规的7个任务和最终任务外,还有3个秘密flag在其中,这3个flag与最终战役有很大的关系,必须要收集到。

来看看另一个地址:

看出什么端倪了吗?注释的提示中的大写字母抽出来:USER AGENT,结合robots.txt中的提示,应该是要换header。

挂上代理在burp中抓包,将User-Agent: Three-eyed-raven添加到请求头中,发送数据包。

<!--

"I will give you three hints, I can see the future so listen carefully" - The three-eyed raven Bran Stark

"To enter in Dorne you must identify as oberynmartell. You still should find the password"

"3487 64535 12345 . Remember these numbers, you'll need to use them with POLITE people you'll know when to use them"

"The savages never crossed the wall. So you must look for them before crossing it"

-->

花点儿时间,通过扫描后台,可以发现更多的秘密:

发现一个新的页面:

http://192.168.50.215/raven.php

查看源代码,发现如下提示,目前还没有什么头绪,先记下来:

直接访问是行不通的,不过好像暗示了什么:

Music?野兽都能懂?同时考虑一下三眼乌鸦的第三个指示,让我们把音乐下载下来,用exiftool查看文件信息:

https://sno.phy.queensu.ca/~phil/exiftool/

Savages secret flag: 8bf8854bebe108183caeb845c7676ae4

这样获得了第一个秘密flag!

现在根据地图的指引,让我们开始下一步吧!

0×02 初到多恩

经过完整的扫描,又发现了如下的奇怪路径:

源代码中的提示:

<!--"My little birds are everywhere. To enter in Dorne you must say: A_verySmallManCanCastAVeryLargeShad0w .

Now, you owe me" - Lord (The Spider) Varys
"Powerful docker spells were cast over all kingdoms.

We must be careful! You can't travel directly from one to another... usually.

That's what the Lord of Light has shown me" - The Red Woman Melisandre
-->

结合nmap中ftp的banner信息

明显,这便是地图上提到的第一个flag的所在地,Dorne(FTP)

提示中只提到了口令,但是却没有将用户名告诉我们,突然想到,前面三眼乌鸦提示过我们,进入Dorne需要的身份是oberynmartell(奥柏伦·马泰尔,人称沙蛇,ftp的banner中也提到了沙蛇女),这样我们得到了第一个通行证。

可以看到第一个flag已经出现了~

0×03 攻略北境王国

进入ftp:

problems_in_the_north.txt内容如下:

很明显要用上面的方法对下面的密码进行解密。

加密方式是:md5(md5($salt).$pass)

nobody:6000e084bf18c302eae4559d48cb520c$2hY68a

通过查阅资料(hashcat official wiki),这种加密方式只在hashcat-legacy 中支持。

同时发现,根据工具支持的格式,拿到的hash还需要把”$”改为”:”

6000e084bf18c302eae4559d48cb520c:2hY68a

github中的地址为:https://github.com/hashcat/hashcat-legacy

但是可以看到,最新版的hashcat已经去掉了这种加密方式的破解,所以我们还得找一个旧版本

https://hashcat.net/files_legacy/hashcat-2.00.7z

ok得到密码:stark

联想到之前提到的pass through the wall的方法是mcrypt:

使用mcrypt解密,密码就是上面解密的MD5

直接访问域名发现并不能进入,而往上看,I’ll write on your map this route to get faster to Winterfell.

这句话暗示了要将这个域名加入到hosts,方便访问,不过我想先走个捷径,试试直接访问:

结果被自己的懒惰给坑了,还被无情的嘲笑。。。

结果加入hosts之后,一直无法访问到,尝试各种方法后,确定应该是需要更改DNS并刷新缓存,清空浏览器历史记录,这样才不会被之前的DNS弄到别处去。

由于解决这个问题用时太长,已经很晚了,决定先休息,第二天到单位再做,我将靶机转移到了主机模式,这里IP变成了192.168.110.129。

查看源代码得到第二个flag:

从提示中可以看到,盾徽是个突破口:

这是一个简单的隐写术。

用文本方式打开,在最后会出现这样一段话:

“Timef0rconqu3rs TeXT should be asked to enter into the Iron Islands fortress” – Theon Greyjoy

看来,下一步的关键点已经有了,那我们就向着目标出发吧!

地图显示,第三个目标在DNS上,而上面的暗示指出TXT记录可能包含些什么,这时我们可以使用nslookup工具对dns记录进行查看。

nslookup最简单的用法是查询域名对应的IP地址:

可以查询包括A记录、MX记录、NS记录、CNAME记录、TXT记录。

格式为:nslookup -qt=txt 域名

这样,我们构造一个命令,查看一下靶机dns的txt记录,得到第三个flag:

从上面的提示中,目标直指风暴地(stormlands),访问端口10000

Enter using this user/pass combination: aryastark/N3ddl3_1s_a_g00d_sword#!

随便搜索一些什么(这一步比较坑,现在出于安全考虑,给java程序设置设置了一堆的坎,尤其是firefox都禁用了java程序,这里推荐使用IE,把域名加到java的例外列表里才能正常显示小程序,侧面反映出IE的不安全性233)

找到flag.txt,打开如下:

回头看看地图,山谷王国指的是PostgreSQL,在nmap里我们扫到过这个服务:

查阅一下PostgreSQL常用命令,了解清楚后,链接数据库:

$psql -U user_name -d database_name -h serverhost

很明显这是一段base64编码,祭出工具转换一下:
不仅得到了flag,同时也获得了下一站的账号密码。

这里留个心,虽然让我们马上去下一站,但是我们注意到数据库里还有很多其他的数据表,浏览一下看看。首先select * from aryas_kill_list
死亡笔记吗??!!再看看其他的。

下一个是braavos_book,布拉沃斯?好像哪里见过,对了翻开地图看看,哈哈,果然,隐藏的flag哦。

select * from braavos_book;

咦?9是什么?看起来是一串经过加密的字串,经过分析和尝试,这是用ROT16加密的字符串,解密之后

The many-faced god wants you to change your face. He wants you to identify as one of your kill list. Select it based on this book’s lost page number. The database to connect will be braavos and your password will be: ValarMorghulis

看来是要让我们遍历一下死亡笔记里的名单了,先记下放一放,把其他的信息看完。

继续收集信息,万一有用呢?select * from eyrie;这是鹰巢城的艾林家族。

得到秘密flag,好现在我们前往Kingdom of the Reach。

0×07 河湾王国

看看地图,入口是imap,但是端口没有打开,有什么头绪吗?

前面最开始三眼乌鸦告诉了我们三条线索,第二条可以派上用场了

”3487 64535 12345 . Remember these numbers, you’ll need to use them with POLITE people you’ll know when to use them”

POLITE people ?好像也在那里见过,前面我们获得了popular_wisdom_book,其中便有这样的字眼:

好吧,需要敲门,这是一个安全机制,端口敲门服务(knockd),查下资料,看看这是啥。

这个该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”。

通过这种方法使系统开启需要访问的服务端口,才能对外访问。

不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。

端口试探(port knocking)是一种通过连接尝试,从外部打开原先关闭端口的方法。一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机。
端口试探的主要目的是防治攻击者通过端口扫描的方式对主机进行攻击。
端口试探类似于一次秘密握手协议,比如一种最基本的方式:发送一定序列的UDP、TCP数据包。当运行在主机上的daemon程序捕捉到数据包以后,如果这个序列正确,则开启相应的端口,或者防火墙允许客户端通过。
由于对外的Linux服务器通过限制IP地址的方式来控制访问,因此可以利用这种端口试探方式来进行防火墙对于访问IP地址的控制。

使用工具对三眼乌鸦说的三个端口号进行敲门吧:

http://www.portknocking.org/

这是端口敲门的官网,从里面可以找到需要的工具,也可以到github上找到很多,

我在里面选择了一款python的工具,knock,尝试一下吧:

git@github.com:grongor/knock.git

有兴趣的也可以看看代码学习一下~

先扫一下143端口,是被防火墙过滤掉的:

使用knock工具进行敲门:

143端口成功打开:

nc 192.168.110.129 143

直接连接到143后,需要用命令进行邮件操作,简要的操作如下:

A01 LOGIN abc 123 #用户登录

A02 LIST “” * #列出所有信箱列表

A03 Select INBOX #选择收件箱

A04 Search ALL #查询收件箱所有邮件

A05 Search new #查询收件箱所有新邮件

A06 Fetch 5 full #获取第5封邮件的邮件头

A07 Fetch 5 rfc822 #获取第5封邮件的完整内容

A08 Fetch 5 flags #查询第5封邮件的标志位

A09 Store 5 +flags.silent (/deleted) #设置标志位为删除

A10 Expunge #永久删除当前邮箱INBOX中所有设置了/deleted标志的信件

A11 noop # 空语句

A20 LOGOUT #退出

输入的每条命令都需要加上标签,也可以直接输入a+命令:

a login olennatyrell@7kingdoms.ctf H1gh.Gard3n.powah

得到如下的邮件 :

得到如下的邮件 :

Congratulations!!

You conquered the Kingdom of the Reach. This is the flag: aee750c2009723355e2ac57564f9c3db

Now you can auth on next Kingdom (The Rock, port 1337) using this user/pass combination:

User: TywinLannister

Pass: LannisterN3verDie!

“The things I do for love…” – Jaime (Kingslayer) Lannister

在收件箱的这唯一一封邮件中,我们找到了flag。

0×08 征服凯岩王国与君临

下一步是凯岩王国,端口是1337,但是可以看到1337是关闭的,这是怎么回事?

重启虚拟机、重新导入虚拟机都不奏效,突然想到,我做出的改变只是网络的连接方式,会不会和这个有关?

于是我将网络恢复到桥接模式于是:

大门终于出现在我的面前!

登录进去,是一个gitlist

大致浏览一下:

2f686f6d652f747972696f6e6c616e6e69737465722f636865636b706f696e742e747874 十六进制,转成ascii码试试

/home/tyrionlannister/checkpoint.txt

这应该是我们需要得到的文件,但是这是用在哪里的呢?

会不会是之前我们在网页里java程序那里呢?

并没有,那这是怎么得到呢,翻翻看地图,发现和mysql有关。

那有可能就是注入喽?但注入点在哪里?

还是google一下吧,最后查到Gitlist存在一个远程代码执行漏洞,比如这样:

很明显,返回的错误中执行了代码,那么让我们看下这个文件试试:

user/pass: cerseilannister/_g0dsHaveNoMercy_

db: kingslanding

http://192.168.48.189:1337/casterly-rock/blob/master/“a”`mysql -h 192.168.48.189 -u cerseilannister -p_g0dsHaveNoMercy_ -D kingslanding –execute=”show tables;”`

-..-. . – -.-. -..-. — -.– … –.- .-.. -..-. ..-. .-.. .- — 很明显是摩斯码。

翻译一下:/ETC/MYSQL/FLAG

但是当我们尝试去查看这个文件时却发现文件并不存在,这是怎么回事?

在摩斯密码的后面还有一点儿提示,告诉我们在这里有特权,看看都有啥:

可以看到有file、grant、select、insert、create,猜想,我们有可能需要使用特权把flag的内容导入一个新的表中,这样我们就可以查看了。

http://192.168.48.189:1337/casterly-rock/blob/master/“a”`mysql -h 192.168.48.189 -u cerseilannister -p_g0dsHaveNoMercy_ -D kingslanding –execute=”CREATE TABLE test (flag TEXT);”`

http://192.168.48.189:1337/casterly-rock/blob/master/“a”`mysql -h 192.168.48.189 -u cerseilannister -p_g0dsHaveNoMercy_ -D kingslanding –execute=”LOAD data INFILE ‘/etc/mysql/flag’ INTO TABLE test;”`

Ssh user-pass: daenerystargaryen-.Dracarys4thewin.

好,这下我们得到了7个flag中的最后一个,还有SSH的用户名密码,这是最终战场的入口。

0×09 最终决战

提示中说,这里是通往172.25.0.2的唯一入口,这有可能是这里并没有 fail2ban 的功能,这给了我们暴力破解root权限的可能性,而且还存在digger.txt这个字典,用scp命令把这个文件下载到本地,用Hydra来进行暴破吧:

可以看到已经得到了结果:

login: root password: Dr4g0nGl4ss!

找到了这里的秘密flag!

Host’s ssh:

branstark/Th3_Thr33_Ey3d_Raven

我们并不是root权限,所以思路就是要提权,通过查看id,发现这是一个docker虚拟机,然后查看一下版本,经过查询,docker存在一个本地提权漏洞(参考https://www.exploit-db.com/exploits/40394/)需要用到metasploit

看来是要破解checkpoint中的密码了

三个秘密flag是:

8bf8854bebe108183caeb845c7676ae4

3f82c41a70a8b0cfec9052252d9fd721

a8db1d82db78ed452ba0882fb9554fc9

密码的公式是:

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))

)

简单用python写段代码,跑一下:

str1="8bf8854bebe108183caeb845c7676ae4"

str2="3f82c41a70a8b0cfec9052252d9fd721"

str3="a8db1d82db78ed452ba0882fb9554fc9"

str0=str1[len(str1)-10:len(str1)]+str2[len(str2)-10:len(str2)]+str3[len(str3)-10:len(str3)]

print str0

结果是:45c7676ae4252d9fd7212fb9554fc9

顺利打开压缩包:

Final Battle flag: 8e63dcd86ef9574181a9b6184ed3dde5

_

___ _ _ _ ___ ___ _| |

| . | | | | | -_| . |

| _|_____|_|_|___|___|

|_|

You won the battle against White Walkers. You pwned the Game of Thrones CTF!!! (v1.0 September 2017)

Now the seven kingdoms can rest in peace for a long time ruled by a true king/queen.

Congratulations and I hope you enjoyed the experience as much as me making it!!

Designed by Oscar Alfonso (OscarAkaElvis or v1s1t0r)

Contact: v1s1t0r.1s.h3r3@gmail.com

https://github.com/OscarAkaElvis/game-of-thrones-hacking-ctf

A last little present! you can get now all the flags ordered:

Dorne

Winterfell

Iron Islands

Stormlands

Mountain and the Vale

Reach

Rock and King's Landing

Savages

City of Braavos

Dragonglass Mine

Final Battle

Get the word of each one using https://crackstation.net or any other md5 online crack service to get a phrase in a row!!

就这样,我们顺利完成了任务,赢得了最后的胜利!又一次守护了世界和平!

这个靶机完成度真的是相当的高,而且玩起来特别有意思,学到了很多,很开心,希望以后有更多高质量的靶机供大家happy!

参考资料http://k3ramas.blogspot.com/2017/11/game-of-thrones-ctf-1-walkthrough_1.html
https://blog.vonhewitt.com/2017/11/game-thrones-ctf-1-vulnhub-writeup

*本文作者:ksufer,转载请注明来自FreeBuf.COM

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
重回颜值巅峰,新一代奥迪Q7曝光,德味十足的豪华SUV

重回颜值巅峰,新一代奥迪Q7曝光,德味十足的豪华SUV

生活魔术专家
2026-06-27 12:07:36
布里奇斯3换3交易达成!黄蜂换射手补空缺评B+ 太阳得不偿失评D+

布里奇斯3换3交易达成!黄蜂换射手补空缺评B+ 太阳得不偿失评D+

罗说NBA
2026-06-29 04:44:42
网红直播时被警察带走!国际大牌全是假的

网红直播时被警察带走!国际大牌全是假的

环球网资讯
2026-06-29 15:58:33
全网嘲讽!远嫁印度的丹丹复出带货翻车!直播间刷屏:赶紧回印度

全网嘲讽!远嫁印度的丹丹复出带货翻车!直播间刷屏:赶紧回印度

魔都姐姐杂谈
2026-06-28 05:00:03
“这种环境都能排卵?”女毕业生表白单位男领导,评论区炸锅了

“这种环境都能排卵?”女毕业生表白单位男领导,评论区炸锅了

世界圈
2026-06-26 08:40:50
3.2亿灵活就业,意味着什么?

3.2亿灵活就业,意味着什么?

点评校尉
2026-06-14 21:13:41
人民日报披露案情,抓捕12人,坐实《四渡》被黑

人民日报披露案情,抓捕12人,坐实《四渡》被黑

光影新天地
2026-06-29 20:00:56
2020年克林顿坦言出轨原因,莱温斯基:拉开裤链后他要用雪茄助兴

2020年克林顿坦言出轨原因,莱温斯基:拉开裤链后他要用雪茄助兴

万国明信片
2026-06-28 18:07:20
冯小刚新片彻底扑街!袁立犀利发文不留情面:你的时代已经结束了

冯小刚新片彻底扑街!袁立犀利发文不留情面:你的时代已经结束了

行者聊官
2026-06-26 21:29:01
庆祝活动帅没意义:C罗淘汰赛前收到沮丧消息

庆祝活动帅没意义:C罗淘汰赛前收到沮丧消息

本泽体育
2026-06-29 09:41:45
黄河每天将鱼冲入大海,淡水鱼在海里没法存活,这些鱼去哪里了?

黄河每天将鱼冲入大海,淡水鱼在海里没法存活,这些鱼去哪里了?

向航说
2026-05-24 00:30:03
有性生活和没性生活,身体会出卖你!第三个区别,很多人没想到

有性生活和没性生活,身体会出卖你!第三个区别,很多人没想到

健康科普365
2026-05-30 16:30:29
2026广东高考500分难上公办!41.8万过线家长务必看清

2026广东高考500分难上公办!41.8万过线家长务必看清

鬼菜生活
2026-06-28 15:10:50
东施效颦!忽视王晶和向太劝告,《给阿公的牛肉丸》开机了

东施效颦!忽视王晶和向太劝告,《给阿公的牛肉丸》开机了

电影票房预告片
2026-06-28 23:58:26
挖坑啊!某高校招生专业把机械自动化、人工智能和古生物学放一起

挖坑啊!某高校招生专业把机械自动化、人工智能和古生物学放一起

火山詩话
2026-06-28 08:47:41
普京:俄建议乌俄双方均停止打击对方领土纵深目标

普京:俄建议乌俄双方均停止打击对方领土纵深目标

财联社
2026-06-29 05:03:07
离开11年后,央视名嘴低调隐居北京,如今二婚21年无儿无女很潇洒

离开11年后,央视名嘴低调隐居北京,如今二婚21年无儿无女很潇洒

素衣读史
2026-06-25 21:56:52
向佑发文感谢向佐,还好身后,永远站着亲大哥

向佑发文感谢向佐,还好身后,永远站着亲大哥

话娱论影
2026-06-29 10:44:09
papi酱首谈原生家庭:父亲生性风流,其再婚妻子仅比我大几岁,20岁前对回家既期待又害怕

papi酱首谈原生家庭:父亲生性风流,其再婚妻子仅比我大几岁,20岁前对回家既期待又害怕

都市快报橙柿互动
2026-06-28 08:38:53
何塞卢打脸卡西利亚斯,力挺恩师穆里尼奥,是皇马回到正轨的答案

何塞卢打脸卡西利亚斯,力挺恩师穆里尼奥,是皇马回到正轨的答案

穆里尼奥主义者
2026-06-29 22:30:42
2026-06-29 23:23:00
FreeBuf
FreeBuf
互联网安全新媒体
5548文章数 1757关注度
往期回顾 全部

头条要闻

小米SU7加速向左偏减速向右偏 车主维权近1年4S店松口

头条要闻

小米SU7加速向左偏减速向右偏 车主维权近1年4S店松口

体育要闻

他和伊朗队,再次赢得全世界的尊重

娱乐要闻

跟风电影《给阿公的牛肉丸》开机

财经要闻

万达广场批量易主 多位投资人正式入局

科技要闻

杀疯了!深圳一天出两家200亿具身智能公司

汽车要闻

全新宝马iX3长轴版将于成都车展预售 四季度交付

态度原创

艺术
亲子
家居
手机
军事航空

艺术要闻

他爱上自己的缪斯,把她画成女神,却眼睁睁看着她死去

亲子要闻

兄弟俩的卷尺糖

家居要闻

传奇筑 日常诗

手机要闻

屏幕反人类,但AI绝了!酷派小方块上手:没法当主力机用

军事要闻

普京最新发声:俄罗斯正处于命运攸关之际

无障碍浏览 进入关怀版