这是我加入r3之后第一次有输出的比赛,比赛难度不大,有些题目挺有新意的,记录一下我参与解决的题目。
OSINT
Czech Where?
开局一张图,直接喂给谷歌图片搜索
能找到同一地点的图片,来自一篇游记http://tabiichigo.livedoor.biz/archives/51921024.html
图片链接为:https://livedoor.blogimg.jp/rokitomo/imgs/4/e/4eff76c9-s.jpg
地点为捷克黄金巷Zlatá ulička u Daliborky
这篇文章也可以佐证20号在黄金巷中,“黃金巷真的非常狹小,總長應該只有十來公尺,共有No.11到No.27十七間屋子”
试来试去终于出了,flag是irisctf{zlata_ulicka_u_daliborky}
好好好,捷克语是吧….
Network
Where’s skat?
这一题一开始我以为是直接分析报文中地理相关信息,于是先研究了流量包中各种协议,一些DNS协议或者DHCP协议中可以使用地域相关字段,而在本题中不存在。后来想使用IP进行定位,只能定位到山景城的IP(但后面也证明了不是那里)。
Anaïs Huang师傅提出使用无线网络的SSID,根据含义明确的SSID可以有效找到大致的位置,例如
Morlin <=> Morlin Engineering\Morlin Guest…
ABM Parking <=> ABM Parking Services
Mag1str师傅则使用wigle.net这个网站利用流量中的BSSID信息准确的位置Union Station
而flag是irisctf{los_angeles_union_station}
另外再补充一些wlan相关知识:https://forum.huawei.com/enterprise/zh/thread/580899002067599360
Foresics
Not Just Media
使用potplayer播放该视频,在“属性”中的“媒体内嵌资源”项上我们可以发现怪东西
选中后点击“保存为其他名称”即可提取出来
打开预览一下就会发现存在字符替换的情况
那么就有以下几种思路了:
- 提取被替换的字符
- 提取替换上去的字符
- 以这个字体重新渲染某个特定的字幕。
这一题是第三者,使用这个字体重新渲染一下mkv文件中的字幕即可。
怎么渲染呢?在fontsee.com这个网站中上传字体后输入字幕的内容即可。
提取字幕也可以使用potplayer,入口在“字幕”->“保存字幕”->“另存字幕为”
What the Beep?
我愿称之为物理题。
思路很开门,给了四个html文件,文件名就是经纬坐标,打开后就能看到横轴为时间纵轴为分贝的折线图。
经过观察,记录数据如下:
位置 | 声强 | 近似 |
---|---|---|
源点 | 140dB | 140dB |
上37.310205, -120.352005 | 55.70~56.67dB | 56dB |
下37.185287, -120.292548 | 49.00~49.985dB | 49.5 |
左37.258453, -120.406603 | 51.79~52.2dB | 52dB |
右37.232087, -120.262349 | 52.04~53dB | 52dB |
思路就是:利用声音衰减规律计算距离,利用四个坐标计算范围,求交点。但具体数值的计算是不便的,不如转换为比例。
由上述公式可以推出r上:r下:r左:r右 = 2.2:1:1.4:1.4
于是用ps模个图看看大致位置。
可能偏差有点大,试了好多次都不对,于是心一横写了个枚举程序。
PS:我自己设置的参数爆破了好一会都没出,Crazy_Man随手一改就出来了,TQL,ORZ。
1 | # 左上角 37.280627, -120.325931 |
Investigator Alligator
背景故事就是机器被打了,加密了一些文件,用户还输入了一些东西。
拿到的是磁盘镜像,用7z直接解压了。
检查用户目录
在用户目录\home\stephen
下我们发现了被加密的文件encrypted.img
、可执行文件taunt
和python脚本rswenc.py
简单分析tauna就是提示被PWNED了,然后让输入一些内容;rswenc.py则是和指定的服务器进行交互然后利用得到的密钥加密指定文件。
根据题目描述,管理员记录了流量和内存镜像
思路就很清晰了,分析流量呗
检查管理员目录
在root目录下找到.bash_history,可以确定capture下的network是受攻击时tcpdump获得的流量,使用LiME获取了内存镜像,位置为\LiME\src\sample.mem
。
分析
首先是流量分析,结合python脚本,我们筛选出ip.addr == 149.28.14.135 and tcp.port == 9281
的流量,发现只有一条,并且数据也是明文传输的: eng0jieh7ahga7eidae6taebohhaicaeraef5ahng8ohb2Tho3ahz7ojooXeixoh0thoolung7eingietai8hiechar6ahchohn6uwah2Keid5phoil7Oovool3Quai
接下来就是编写脚本进行恢复被加密的数据了。
改改rswenc.py
的ip和端口,再写个服务端发送密钥即可。
1 | import socket |
恢复出的数据用7z打开找到data\super_duper_important_info.png
这是一半的flag,另一半也很容易想到就是用户输入的内容咯。
十六进制查看器打开sample.mem
很容易就能找到
PS:在检查用户目录下的bash_history时会发现可疑文件.cache/gunzip/gunzip
,这就是攻击者的🐎.