快捷搜索:  网络  渗透  后门  CVE  扫描  木马  黑客  as

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

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端口,发现以下信息:

图片.png

图片.png

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

图片.png

查看一下robots.txt文件:

图片.png

分别是:

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中发现了指导性的信息:

图片.png

图片.png

成功得到地图!

上面记录了本次游戏的症结点以及目标,与冰与火之歌的各国相对于应,讲究!

除了常规的7个义务以及终极义务外,还有3个隐秘flag在其中,这3个flag与终极战斗有很大的关系,必须要网络到。

来看看另一个地址:

图片.png

图片.png

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

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

图片.png内容以下:

<!--

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

   -->

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

图片.png

发现一个新的页面:

http://192.168.50.215/raven.php

图片.png

查看源代码,发现以下提示,目前尚无什么头绪,先记下来:

图片.pnghttp://192.168.110.129/direct-access-to-kings-landing/

直接走访是行不通的,无非好像暗示了什么:

图片.png

图片.png

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

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

图片.png

Savages secret flag: 8bf8854bebe108183caeb845c7676ae4

如许获患了第一个隐秘flag!

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

0×02 初到多恩

经过完备的扫描,又发现了以下的希罕路径:

图片.png

图片.png

源代码中的提示: 

<!--"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信息

图片.png

显然,这便是地图上提到的第一个flag的地点地,Dorne(FTP)

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

图片.png

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

0×03 攻略北境王国

进入ftp:

图片.png

problems_in_the_north.txt内容以下:

图片.png

很显然要用上面的要领对下面的暗码进行解密。

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

nobody:6000e084bf18c302eae4559d48cb520c$2hY68a

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

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

6000e084bf18c302eae4559d48cb520c:2hY68a

图片.png

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

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

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

图片.png

图片.png图片.png

ok得到暗码:stark

联想到之条件到的pass through the wall的要领是mcrypt:

图片.png

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

图片.png

图片.png

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

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

图片.png

图片.png

效果被本人的懒惰给坑了,还被无情的嘲笑。。。

效果加入hosts以后,始终没法走访到,尝试种种要领后,确定应该是需要更改DNS并革新缓存,清空阅读器历史记录,如许才不会被之前的DNS搞到别处去。

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

图片.png

图片.png

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

图片.png

0×04 进军铁群岛

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

图片.png

这是一个简单的隐写术。

用文本方式关上,在最后会出现如许一段话:

图片.png

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

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

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

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

图片.png

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

格式为:nslookup -qt=txt 域名

如许,我们组织一个命令,查看一下靶机dns的txt记录,得到第三个flag:

图片.png

0×05 前往风暴地

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

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

图片.png

图片.png

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

图片.png

图片.png

找到flag.txt,关上以下:

图片.png

0×06 山谷王国

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

图片.png现在我们用用户名暗码登录一下试试看:

图片.png

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

$psql -U user_name -d database_name -h serverhost

图片.png图片.png

很显然这是一段base64编码,祭出工具转换一下:
图片.png 不仅得到了flag,同时也获患了下一站的账号暗码。

这里留个心,虽然让我们马上去下一站,然则我们注意到数据库里还有很多其他的数据表,阅读一下看看。起首select * from aryas_kill_list
图片.png死亡笔记吗??!!再看看其他的。

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

select * from braavos_book;

图片.png

咦?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;这是鹰巢城的艾林家族。

图片.pngselect * from popular_wisdom_book;

图片.png好,归到刚才的数据库名单以及暗码,挨个试一遍吧,最后我们发现TheRedWomanMelisandre是用户名

图片.png

图片.png

得到隐秘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,其中便有如许的字眼:

图片.png

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

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

通过这类要领使体系开启需要走访的服务端口,才能对外走访。

不使用时,再使用自定义的序列号来“关门”,将端口关闭,纰谬外监听。进一步抬举了服务以及体系的安全性。

端面试探(port knocking)是一种通过连接尝试,从外部关上本来关闭端口的要领。一旦收到正确顺序的连接尝试,防火墙就会动态关上一些特定的端口给允许尝试连接的主机。

端面试探的首要目的是防治攻击者通过端口扫描的方式对主机进行攻击。

端面试探类似于一次隐秘握手协定,譬如一种最基本的方式:发送一定序列的UDP、TCP数据包。当运行在主机上的daemon程序捕捉到数据包之后,要是这个序列正确,则开启相应的端口,或者防火墙允许客户端通过。

由于对外的Linux服务器通过制约IP地址的方式来控制走访,因此可以行使这类端面试探方式来进行防火墙对于走访IP地址的控制。

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

http://www.portknocking.org/

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

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

git@github.com:grongor/knock.git

有兴致的也能够看看代码学习一下~

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

图片.png

使用knock工具进行拍门:

图片.png

143端口成功关上:

图片.png

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 pgh.Gard3n.powah

图片.png图片.png图片.png图片.png得到以下的邮件 :

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是关闭的,这是怎么归事?

图片.png

重启捏造机、重新导入捏造机都不收效,突然想到,我做出的改变只是收集的连接方式,会不会以及这个有关?

因而我将收集恢复到桥接模式因而:

图片.png

大门终究出现在我的眼前!

登录进去,是一个gitlist

图片.png

大致阅读一下:

图片.png

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

图片.png

/home/tyrionlannister/checkpoint.txt

这应该是我们需要得到的文件,然则这是用在那里的呢?

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

图片.png

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

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

照样google一下吧,最后查到Gitlist存在一个遥程代码执行漏洞,譬如如许:

图片.png

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

图片.png找到去往君临的症结:

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;”`

图片.pnghttp://192.168.48.189:1337/casterly-rock/blob/master/“a”`mysql -h 192.168.48.189 -u cerseilannister -p_g0dsHaveNoMercy_ -D kingslanding –execute=”SELECT * from iron_throne;”`图片.png

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

翻译一下:/ETC/MYSQL/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=”show grants;”`图片.png

可以看到有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;”`

http://192.168.48.189:1337/casterly-rock/blob/master/“a”`mysql -h 192.168.48.189 -u cerseilannister -p_g0dsHaveNoMercy_ -D kingslanding –execute=”select * from test;”`图片.png

Ssh user-pass: daenerystargaryen-.Dracarys4thewin.

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

0×09 终极决战

在决战前要先找到必要的武器,Dragonglass是必须的,所以我们先来寻觅一下吧!图片.png

成功上岸ssh,先来网络情报吧:图片.png图片.png

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

scp daenerystargaryen@192.168.48.189:/home/daenerystargaryen/digger.txt ./digger.txt图片.png

ssh daenerystargaryen@192.168.48.189 -L 12345:172.25.0.2:22 -N图片.png

hydra -l root -P digger.txt ssh://localhost:12345图片.png

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

login: root password: Dr4g0nGl4ss!

通过ssh登录到172.25.0.2图片.png

探查一番图片.png图片.png

找到了这里的隐秘flag!

Host’s ssh:

branstark/Tp_Thr33_Ey3d_Raven

进入真实的终极决战:图片.png

看来最后一战已经来临,然则并没有发现什么线索。得从体系级其它漏洞进行考虑了:图片.png

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

是时辰祭出大杀器了:图片.png图片.png

成功提权,去root里看看:图片.png

把文件拷贝归来图片.png

用7z关上:图片.png

看来是要破解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.pr3@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!!

把这些flag回位到这个文件里,破解这些MD5:图片.png

就如许,我们顺利实现了义务,赢患了最后的胜利!又一次守护了全国以及平!

这个靶机实现度真的是至关的高,而且玩起来特别故意思,学到了很多,很开心,希翼之后有更多高质量的靶机供人人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

*

您可能还会对下面的文章感兴趣: