有趣的黑掉卫星Hack-A-Sat CTF比赛——模拟卫星视角beckley

本文详细介绍了Hack-A-Sat比赛中关于模拟卫星视角的beckley挑战,涉及Google Earth、KML文件和卫星轨道知识。参赛者需利用TLE数据和Python的Skyfield库计算卫星位置,模拟卫星拍摄角度找到flag。通过分析KML文件的<LookAt>标签和卫星轨道参数,最终在Google Earth中定位flag。
摘要由CSDN通过智能技术生成

以下内容是通过阅读《Hack-A-Sat太空信息安全挑战赛深度解题》做的测试。

题目介绍

Fire up your Google Earth and brush up on your KML tutorials, we're going to make it look at things!

题目描述得很简略,主办方希望参赛者利用Google Earth软件和KML文件寻找到设置的flag。给出的资料有:

(1)一个命名为static的文件夹,其中只有一个文件remote.kml,从后缀名可知,该文件是KML(Keyhole Markup Language,Keyhole标记语言)文件,KML是专门用于描述和保存地理信息的文件格式,其详细情况会在下文介绍。

(2)给出了一个链接地址,使用nc连接到主办方给出的链接后,会得到进一步提示,如图2-1所示。

图2-1  beckley挑战题的提示信息

这段提示的内容就是告诉参赛者,当前截获了一颗卫星拍摄到的华盛顿纪念碑的照片,并且知道了这颗卫星的TLE(Two-Line Element,两行轨道根数)及照片的拍摄时间,要求参赛者在Google Earth中模拟卫星的拍摄角度、拍摄时间,就可以找到flag信息。

编译及测试

这道挑战题的代码位于beckley目录下,在该目录下打开终端,执行如下命令:

sudo make build

接着执行make test命令进行测试,输出如图2-2所示,可以发现测试中是使用curl工具访问Google Earth的,通过解析返回的信息,最终得到flag。

图2-2  beckley挑战题测试输出

为了更加清晰地显示解题过程,可以分开测试:

(1)打开一个终端,执行如下命令,其中端口号、flag值都可以随意设置,该命令的作用是运行一个beckley挑战题服务端容器。

socat -v tcp-listen:19020,reuseaddr exec:"docker run --rm -i -e SERVICE_HOST=172.17.0.1 -e SERVICE_PORT=19021 -e SEED=1000 -e FLAG=flag{zulu49225delta\:GG1EnNVMK3-hPvlNKAdEJxcujvp9WK

4rEchuEdlDp3yv_Wh_uvB5ehGq-fyRowvwkWpdAMTKbidqhK4JhFsaz1k} -p 19021\:80 beckley\:challenge"

(2)打开另一个终端,模拟参赛者,执行命令nc 172.17.0.1 19020,其中地址、端口就是第(1)步中启动服务端容器时设置的参数,其输出如图2-1所示,会给出题目进一步的提示。

(3)再打开一个终端,执行如下命令,该命令使用curl工具访问在第(2)步中提示的URL地址,其实是服务端容器模拟的Google Earth服务器地址。

curl http://172.17.0.1:19021/cgi-bin/HSCKML.py?CAMERA=-77.03,38.89,430000,40.3694166667,

63.5358055556-H 'User-Agent: GoogleEarth/7.3.2.5815(X11;Linux (5.2.0.0);en;kml:2.2;

client:Pro;type:default)' -H 'Accept: application/vnd.google-earth.kml+xml, application/

vnd.google-earth.kmz, image/*, */*' -H 'Accept-Language: en-US, *' -H 'Connection: keep-alive'

curl工具在URL地址后加入了很多参数,其中重要的是CAMERA参数,可以发现其由5个数字组成。在主办方提供的remote.kml文件中有如下描述,与curl工具使用的CAMERA参数很像,这是重点,具体含义会在下文分析中涉及到。

CAMERA=[lookatLon],[lookatLat],[lookatRange],[lookatTilt],[lookatHeading]

命令执行后,会返回KML格式的结果,如图2-3所示,从图中可以看出,在其中的<Placemark>标签的子标签<description>内给出了flag信息。

图2-3  beckley挑战题获取到的flag

相关背景知识

1.卫星轨道和TLE轨道根数

太空中的卫星在地球引力等各种力的作用下做周期运动,一阶近似就是一个开普勒椭圆轨道。由于其他力的存在(如大气阻力、其他星球的引力等),实际的轨道和理想的开普勒轨道有偏离,称为“轨道摄动”。这里我们暂时不考虑摄动,只考虑理想开普勒轨道时的情况。

为了确定一个卫星的运行轨道,需要6个轨道参数,卫星运行轨道参数示意图示意图如图2-4所示。

(1)描述轨道大小的参数——轨道半长轴a。

轨道半长轴是椭圆长轴的一半。轨道半长轴与轨道周期具有对应关系,半长轴越大,轨道周期越长。

(2)描述轨道形状的参数——轨道偏心率e。

偏心率是指椭圆两焦点的距离与长轴的比值。偏心率为0时,轨道是圆;偏心率为0~1时,轨道是椭圆;偏心率为1时,轨道是抛物线;偏心率大于1时,轨道是双曲线。

图2-4  卫星运行轨道参数示意图

(3)描述轨道平面在空间方位的参数——轨道倾角i和升交点赤经Ω。

轨道倾角是指轨道平面和地球赤道平面的夹角。倾角小于90°时,为顺行轨道,卫星总是从西(西南或西北)向东(东北或东南)运行;倾角大于90°时,为逆行轨道,卫星的运行方向与顺行轨道相反;倾角为0°时,为赤道轨道;倾角为90°时,为极轨道。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值