E-CTF比赛 Write Up
E-CTF比赛 Write Up
1. Cryptography(密码学)
ASCII me anything but not the flag
根据它的提示,我们先将这段内容用ASCII解码,得到:
第三段的指的是凯撒大帝被刺杀的事件:
所以我们尝试遍历前两段的凯撒加密结果,但只有第二段可以得到有用信息:
可以得知密钥为:”HBVHBV“(我一开始以为密码就是KEYKEY)。由于第一段括号前的内容为4个字母,刚好对的上”ectf“,所以应该是单表或者多表替换加密。再因为密钥为重复的内容,不难猜测这应该是“Vigenere 维吉尼亚密码”。于是找个在线的解密网页(https://planetcalc.com/2468/#google_vignette)便可以得到flag:
OIIAIOIIIAI 😼
由于知道这次比赛的flag格式为ectf{},所以不难发现这串字符的偶数位应该是flag的开头,也就是:
而由于}在字符串开头,所以猜测基数位的倒序为flag的后半部分:
拼在一起得到flag:
Hashes Binder
首先会下载得到3个文件:
由于这份Excel文件被设置了密码保护,所以我们尝试用这个wordlist里的内容来爆破它:
打开Excel文件后会看到3部分内容
首先注意到第2,3部分非常像base64编码内容,于是尝试解码,第三部分会成功解出来:
第二部分则提示解码失败,所以我们尝试其他base解码,最后用base58成功解码得到:
第一部分则非常像哈希加密的结果,所以我们用这个网站试一下能不能破解
https://hashes.com/en/decrypt/hash
提示破解成功,原文为spooky,并且使用的算法是Gost Hash。(spooky其实也在这个wordlist.txt里,所以理论上来说这一步也可以用爆破得到。)
于是用
成功解压.zip压缩包得到flag:
RSA intro
这道题我们会得到以下内容:
因为没有其他信息了,所以我们先用http://www.factordb.com/index.php试一下暴力分解n:
成功得到n的其中一个因数为5054843。之后就只需要写一段代码解密就可以得到flag:
Cracking the Vault
这道题我们会得到2份文件,一份是python的代码,关于加密算法的,另一份文件则是加密后的结果。
我们首先来看一下加密的具体过程:
我们可以注意到这段代码里有很多多余的内容(指没有真正出现在加密过程中),真正跟加密算法相关的其实只有这一段
所以我们只需要逆向一下这个加密逻辑便可以得到flag:
Never two without three
我们首先会得到这些内容:
直接尝试base64解码会提示失败,所以根据它的提示我们先遍历它的所有凯撒加密然后再解码:
发现这是唯一可以成功解码出来的内容。我们再次尝试用base64解码这段内容会提示失败,所以还是转战其他的base编码,最后再次用base58成功解码得到:
2. Web
Java Weak Token
先简单科普一下JWT:
JWT是一串base64编码,被用.分成3部分。第一部分是header,里面会写使用的算法以及typ(一般都是JWT)。第二部分是Payload,是JWT的核心内容,通常会纪录当前JWT所有者的身份信息。第三部分则是签名,会计算
以确保当前信息的完整性(integrity),真实性(authenticity)。
在这道题我们会首先在目标网站里得到我们的JWT(我们每次访问网站都会得到一个新的JWT):
用https://jwt.io/分析一下:
可以看到,Payload里有一个名为”username“的值当前被设置为“user”,我们猜测只需要将其改成“admin”并且用其再次访问网站即可获得flag。
根据题目的提示,我们先将这个JWT的密钥给爆破出来:
用这个网站将我们的JWT的payload改成“admin”
之后再用这个新的JWT访问网站即可得到flag:
Chat with the admin
这道题比较明显地暗示了我们需要用xss攻击来获取flag。我们首先在https://pipedream.com/创建一个Request Bin(创建临时的 HTTP 端点,用于捕获和检查传入的 HTTP 请求。),
然后在对话框里输入以下内容即可:
之后便会在Request Bin的访问纪录里查看flag:
3. Steganography(隐写)
Definitely not in the PDF
将下载的压缩包解压会得到一份pdf文件:
并没有任何发现,再根据他一直说的“flag”不在这里,于是决定去看一开始的压缩包。果然在文件结尾发现flag:
JB1804
我们会得到一份乐谱:
通过检查发现它并没有隐写任何内容在hex文件里,抑或是LSB隐写。
通过谷歌搜索“music Steganography 1804”可以发现这个维基词条:
点进去之后搜索“1804”会发现Johann Bücking在1804年发明了一种乐谱密码:
根据这张密码表解码会得到:
(法语中的“音乐“是”musique“,所以flag的内容为stegano mousique is super swag。)
The island's treasure
下载文件会得到2张图片:
首先用010 Editor打开第一张图片会发现
在Description后面有一段base64编码
解码后会得到
再解码一次会得到key1:
因为hex文件里面看起来找不到第二段key了,所以我们用Stegsolve.jar打开这张图片查看是否有用LSB隐写的内容。当调整到Red Plane 0时会得到
然后我们现在来打开箱子:根据提示,支持加密隐写并且有GUI的软件并不多,所以我们来试一下OpenStego:
成功找到flag:
Silhouette in cyberpunk
这道题我们会得到一张图片:
非常赛博风。
注意到这两个地方的点组的排列非常像我们日常生活中(比如说电梯里)会碰到的盲文:
(近点的那栋大楼)
(画面左边远处的那栋大楼)
第一张里面的盲文翻译过来是:
而第二张里面的内容才是真正的flag:
根据题目的flag格式要求,我们确定flag为:
4. Miscellaneous
Extraction Mission Heart of the vault
这道题我们会得到一个加密的压缩包Misc_5_-_dwarf_vault_200.zip,将其爆破之后会再次得到一个加密的压缩包dwarf_vault_199.zip,再重复一次操作会得到dwarf_vault_198.zip,也是加密了的。所以我们猜测作者将一份文件(夹)重复加密压缩了200次。所以决定写一个脚本自动化完成这些操作,并且根据提示将所有密码保存进一个txt文件里:
注意,爆破到dwarf_vault_1.zip经常会返回奇怪的ERROR,所以这里的代码逻辑最好是在遇到意外ERROR时直接终止爆破并将现有的所有密码先写进txt文件,不然容易卡在这里重复很多次。
再成功解压dwarf_vault_1.zip后,我们会得到2份文件:drop_pod.py以及mining_report.txt。
txt文件的内容为:
用coordinate将flag表示了出来。于是来检查drop_pod.py的内容:
是这段坐标的生成逻辑。所以可以编写一段代码,靠我们刚才保存的所有压缩密码来还原flag:
5. Forensic
My dearest
我们会得到一份docx文件,也就是word文件。打开后在信息的作者处即可找到文件作者:
根据题目要求,flag为:
Capture the hidden
这道题我们会得到一份.pcap文件,用Wireshark打开它。
由于是要找一份文件,我们先点击“文件” -> “导出对象” -> “HTTP”:
确实发现了一份上传的文件。可以点击保存它,但是打开会发现内容不不完整:
于是我们找这份文件在纪录里的具体位置:
可以看到我们保存的upload的文件内容只有蓝色部分,当我们将后续的内容也提出来,便会得到完整的flag:
Just a PCAP
这道题也是一份pcap文件,再次用Wireshark打开。
但是用之前的操作:“文件” -> “导出对象” -> “HTTP”,并不会发现任何东西。(实际上是因为这段纪录里并没有任何HTTP传输的内容。)
这时我们仔细观察第一条纪录的info会发现它是以”89504E47“,这是非常典型的PNG文件的文件头(因为它对应ASCII字符“‰PNG”),所以我们猜测这些纪录的info内容可以拼成一份完整的PNG文件。我们用这段代码将所有纪录的info内容提取出来并且保存成.png:(这段代码能运行的前提条件是下载了Wireshark\的tshark.exe
然后就会得到这张图片:
6. Osint
Project-153-Q1
这道题我们会得到这张图片:
通过谷歌识图可以很轻易地知道这个地方是:Falls Caramy, 法语原名为Chutes_du_Caramy。
得到flag:
Project-153-Q2
这道题我们会得到这张图片:
通过谷歌识图可以判断出来这张照片是在 Massif de l'Esterel 附近拍摄的。
但由于题目要求的是拍摄时所处的具体位置,所以我们还需要找些其他的线索。
注意到图片远处这里,有一座全是房子的半岛:
于是我们打开Google Earth,查看Massif de l'Esterel附近的海岸线。可以发现这个地方非常想图中的半岛:
并且点开 Calanque de l'Esterel, 83700 Saint-Raphaël, 法国 的相册可以看到这样一张图片:
跟我们图片里的一模一样。沿着这个方向依次尝试带有名字的地点,便可以成功找到拍摄地:Pointe de l'Observatoire, D559, 83700 Saint-Raphaël, 法国。
Project-153-Q3
这道题我们会得到这张图片:
再次通过谷歌识图可以发现图片所在地是 Rocher de Roquebrune:
在Google Earth找到这里
便可以在相册里发现这张图片,大概率是题目所指的“monster:
所以答案为左下角的作者名字。
Project-153-Q4
首先通过谷歌识图判断出照片所在地应该是:Bormes-les-Mimosas
在Google Earth找到这里:
根据照片拍摄角度以及题目描述不难猜出远处的那座岛应该是 Île du Levant。
Project-153-Q5
这道题我们会得到这张图片:
这道题会碰到一个非常有意思的事情。我们拿到的图片的文件大小为29.8 MB,而谷歌识图的上限为20MB,所以我们首先需要压缩一下图片的大小才能使用谷歌识图。我这里是用微信来进行有损压缩的。
然后便可以用谷歌识图来确认地点:
(在法语中,“le” 是阳性单数定冠词,所以不包含在答案内。)
Project-153-Q6
这道题我们会得到这张图片:
再次通过谷歌识图我们可以找到这样一条Instergram:
(为了防止侵犯个人隐私我给图片打了个码。)
于是可以得知这张照片的拍摄所在地为 Moustiers-Sainte-Marie (zipcode:04360)。
至于台阶数可以直接利用开了联网功能的ChatGPT所搜即可:
最后的flag为:
PNJ - 3 - Gouzou
这道题我们会得到一个文件夹,里面有非常多的文件,它说的这个“the”属实是有点意义不明,所以我们先去搜索看一下GOUZOU是什么:
发现是法国艺术家JACE创作一个没有五官的诙谐卡通形象。根据这条线索我们可以锁定这张图片(也就是说我们需要找的应该是这张图片的具体位置):
根据谷歌识图可以发现这张照片在 “Île de Ré”(雷岛):
通过搜索“île de ré gouzou”可以找到这个网页:https://www.realahune.fr/les-murs-dexpression-de-latlantique/,并且发现:
于是我们确定这幅画是在"la digue du Boutillon, île de Ré"(是一座防波堤),得到flag:
__EOF__

本文链接:https://www.cnblogs.com/bimohuixinghe/p/18698468.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!