本文章为AuroraCTF2023的Misc/Blockchain方向的总Writeup,同时提供部分题目的出题脚本与灵感和吐槽
本人学艺不精,故整体难度较低,还请多多包涵
Misc
一拳超人
灵感来源
题目考点“punch card”中的punch,非常的牵强附会
考点
文件尾+基础信息搜集,预期难度1.5⭐
Writeup
用010Editor/Winhex打开图片,发现文件尾存在字符串“What is a punch card?”,搜索punch card后了解穿孔卡片编码规律
根据flag格式,得到flag:Aurora{1PUNCHM4N}
吐槽
好像很多新生都误把文件尾的提示当成flag提交了www,下次我尽量加个hint在前面,但是别的出题人就不一定会这样干了的说
你俩啥时候联动?
灵感来源
灵梦和Miku互换服装这个想法真的好棒www,但是我印象中两边没有正式联动过,意难平…
不过倒是一堆音游又有术曲又有车万曲,某种意义上也算是联动了…?
考点
LSB隐写,预期难度1.1⭐
Writeup
扔Stegsolve全部0通道直接解,或者zsteg也能直接解
flag:Aurora{39_B@d_App7e5!!!}
吐槽
新生们估计都没用过Stegsolve,不了解这个工具拿空格分隔只是为了使用者阅读方便,仅此而已,内容里面其实不存在那个空格的
然后我就看到基本每个人提交至少有一次带那个空格的,甚至有人爆破了20+次还是不删掉那*空格…
我宣布,Stegsolve负全责,Stegsolve,出列!!!
锟斤拷
灵感来源
和题目中提示一样,灵感来自前段时间呼市公交车后面显示文字出现乱码的事情
考点
文件头补全+Base全家桶+信息搜集+汉字编码(GBK),预期难度2.6⭐
Writeup
打开压缩包发现压缩包损坏,用010Editor查看后发现缺少文件头
补全后打开得到flag.docx和fl4g.txt,打开后者得到一串Hex,根据以下方式解码得到提示:
1 | 原文:4841344445343341474e4e53435732344c555453595632424e4e53465755593d |
搜索顺蛋踩即可搜索到题目灵感来源,利用同样的方式将flag.docx的汉字编码进行错位重组:
1 | 原文:芾薪探涛液鹤直嗦氩 |
flag:Aurora{caolaojiaojiaowohanzibianma}
吐槽
出题的时候我就已经猜到有人会把编码前两个和最后两个都扔掉,不过由于大部分人都在做自己方向的题目,Misc没人做,我也就没给提示
直到后面看到有位已经解到“佬教教我汉字编码”了,于是我给了提示“首尾呼应,循环利用”,但是那位应该没理解是什么意思,开始了他的爆破之路:究竟是哪个佬?
结果就是我在后台成功地了解到了百家姓(并不)
还有一件事,我发现新生打不开压缩包的时候第一时间不是想到文件格式出了问题,而是出题人题目附件有问题,这个就完全是靠积累了,总之这一次知道了下一次就能更好地做出来了吧www
至于打开docx报错这件事,详见The Eye Sigil部分
彩虹
灵感来源
出题灵感是当时在密码吧逛的时候看到一位大佬的C#开源项目,觉得很有意思,然后从里面挑个了彩色二维码生成脚本学习了一下,最后自己花了点时间用Python搞了个生成脚本
这里附上大佬的开源项目链接:Lazuplis-Mei/ClassicalCryptography: 部分古典密码 (github.com)
考点
变种LSB+二维码扫描,预期难度2.2⭐
Writeup
用Stegsolve打开图片,查看不同频道,总共能得到6张二维码,依次扫描得到下面的结果:
1 | ['QXVyb3J', 'he0JlbD', 'FFdmVfd', 'GgzX3I0', 'SW5iMH', 'Z2fQ=='] |
拼接后Base64解码得到flag:Aurora{Bel1Eve_th3_r4Inb0vv}(唉,舞萌痴)
最后附上本人冗杂的出题脚本,各位可自行取用优化:
1 | import qrcode |
Chocolate Missile
灵感来源
同名乐曲,鉴定为打Cytus II打的
考点
信息搜集+猜谜+SilentEye隐写,预期难度3.7⭐
Writeup
搜索题目名称,得到同名乐曲结果,在网易云音乐评论区下或搜索创作团队官网可了解到Alice语这一架空语,同时与题目描述第一句话可以对应上,故合理猜测图片中的架空文字为Alice语的架空文字
搜索Alice语,可以搜到我自己手译出来的对应表(当然你也可以自己根据众多曲子的MV和歌词去一一对应,不过会耗很多时间):Alice语架空文字与英文字母的对应(手解) - 哔哩哔哩 (bilibili.com)
对应后得到图片内信息:
1 | The Eye is watching in the dreadful silence, |
根据题目描述提示:“作曲家”指向Chocolate Missile的创作团队Alice Schach and the Magic Orchestra,而“最后一个字”以及粗体“小写”直接提示最后一个字母是小写,故得知passphrase为ALiCeSCHach
而又根据Eye+silence⇒SilentEye,最终经过SilentEye长时间的运行解密之后得到flag:Aurora{BiS_0_N4i-Hellm}
吐槽
应该是所有题目里面出的最糟糕的一题,里面包含了各种猜谜,对新生来说极其不友好,单从推断出SilentEye这一步就需要大量的做题经验才有一定可能联想到,更何况在获取passphrase那一步存在猜谜,这更是恶上加恶,在此向各位新生谢罪(土下座)
同伴方块
灵感
来自传送门2的一个成就“最终传送”(传送门1也存在大量SSTV信号),而传送门以月球作为伏笔,本人作为音游人自然想到了Apollo这首曲子,因此把这两者结合了出了这道题
考点
mp4音轨提取+SSTV,预期难度4.8⭐
Writeup
利用ffmpeg或者Audacity(如使用,则需要先安装对应版本的ffmpeg for Audacity)将mp4的第二条音轨提取出来
1 | ffmpeg -i 阿波罗计划.mp4 -vn -map 0:a:1 -c copy SSTV.mp3 |
然后再将得到的音轨SSTV解码,最后扫出flag:flag{f4LL_iNt0_th3_D@Rks1de}
吐槽
本身题目只进行了两次简单的处理,但是由于没有向新生们科普有关音频&影像处理的知识,同时可能没有料到一个mp4文件可以存在“第二条音轨”,最后看完这个Writeup可能还是懵圈的
总之可以搞一个Audacity,对于音频的隐写分析有着极大的帮助,包括但不限于摩斯,频谱图,二进制等
至于SSTV嘛…听过一遍之后就知道SSTV大概是啥样的了,想扫出来要么在一个安静的地方朝着麦外放,要么就需要搞一个虚拟声卡,整体还是有些麻烦的
The Eye Sigil
灵感
来自Eye Sigil ARG,想到当时的ARG第一步是在每个The Sigil附近放一块The Big Picture的碎片,于是想到把flag分散在每一题里面,然后就有了这道题(新生赛有人搜到了这个出题灵感来着,但是当答案交了www,可能是我全英文的剧情太冗长难懂了吧www)
考点
Act I(预期难度5.2⭐):CVE-28303(一拳超人),LSB(你俩啥时候联动?),Word隐写(不知道算不算)(锟斤拷)
Act II(预期难度5.0⭐):Hex逆序(彩虹),社工+视力(Chocolate Missile),zip伪加密+mp3提取封面图片+修改图片高度(同伴方块)
Writeup
一拳超人:在010Editor查看图片,发现存在两个IEND文件尾,推测为CVE-28303漏洞(亦称Acropalypse漏洞),在github上获取到acropalypse_png.py脚本后使用,最后解出第一块flag:Aurora{C@n_y
你俩啥时候联动?:在获取到flag的通道下面(可见上图),发现下方明文内容存在89504e47字样,察觉到为PNG文件头,故将对应明文信息作为Hex流生成新文件,得到第二块flag:0u_S3e_7he_B
锟斤拷:打开flag.docx的时候发现docx内存在无法识别的文件,故可以想到docx内存在额外的文件,将docx转为zip后打开,可发现在rels文件夹下存在第三块flag:1g_PiCtuRe?}
拼接得到Act I的flag:Aurora{C@n_y0u_S3e_7he_B1g_PiCtuRe?}
彩虹:用010Editor打开png,发现文件尾存在47 4e 50 89字样,猜测为PNG文件逆向输出,将对应数据逆序之后得到第一块flag:Aurora{7
Chocolate Missile:在架空文字最后一行下面的亮白色区域,存在“QQ:1434198202”字样
搜索对应账号后在其QQ空间动态里得到第二块flag:He_J1g_i
同伴方块:在mp4的文件尾处,存在一个zip,提取后发现需要密码,检查加密位后得知压缩包经过了伪加密,修复后从压缩包可提取出DIEIN.mp3,播放发现曲绘被更改成了The Sigil图案,猜测flag为曲绘
用010Editor打开MP3,发现有image/jpeg,之后就是jpg文件头FFD8FFE0
提取后与Act I提供的无flag附件对比后发现图片高度被修改过,修改之后得到第三块flag:5_uP!!!}
拼接得到Act II的flag:Aurora{7He_J1g_i5_uP!!!}
吐槽
当时本来还想搞MP3Stego的,但是不知道为什么总是显示我的wav文件缺了什么东西…我明明用的是ffmpeg转的啊,哭/(ㄒoㄒ)/~~
两道题一共6块flag,其中28303的那块flag有一个人解出来了,Word的那块有两个,其他的要么没交我没看到,要么就没解出来
然后解出28303的那位以为是一拳超人的flag,愣是交了好几次,只能说没看Act I的剧情是这样的www
Blockchain
契约
灵感
不会没人发现题目描述是魔圆第一集开头QB说的话吧,不会吧不会吧(我现在就要看叛逆的物语)
考点
合约部署字节码泄露,预期难度1.0⭐
Writeup
在etherscan上根据地址搜对应的合约,然后查看部署合约的交易,在下面Show More的Input Data选择View input as UTF-8
得到flag:flag{W3lc0me_2_Blockch4in!!!}
吐槽
这道签到题放了整整42hrs没有人解出来,后面是加急赶了个科普视频出来才有人解出来,其他的没解出来的说是因为不会魔法…
只能说视频把flag喂嘴边了,剩下的就是看各位能不能张开嘴巴吃到了
Five Nights at Sepolia’s
灵感
如题目所示,灵感来自FNAF,主要是因为看UCN 50/20的时候Rockstar Freddy老是在那”Please deposit five coins”,联想到自己跟着smartcontractkit学的FundMe,于是在那个的合约基础上稍微做了调整就扔出来当题目了
考点
简单的合约交互,钱包助记词/账户地址私钥的使用,预期难度2.3⭐
Writeup
首先把两个合约扔在Remix上面,等编译好了就在左侧先在At Address处输入合约地址(选中的合约一定是ACTFFundMe.sol),然后点击At Address就可以和已部署的合约进行交互啦~ ( ̄▽ ̄) ~*
然后我解释一下funds函数(其他的不用管):就是检测调用者资助的ETH价值是否超过5USD,如果没有就直接失败,并返回“More money should be spent”,有的话就设定checkCreditList[调用者地址]=1并且返还所有资助的ETH(gas费肯定还不回来的www)
调用成功之后就可以去靶机那里确认啦,如果成功结果应该是这样的说:
1 | Please enter your account address with "0x" at the front: |
wreck那行就是助记词,40那行就是账户私钥,之后跟着科普视频一样导入就可以找到账户啦
flag:Aurora{0xEC3f12a41f9d42FCDCce6125cA219515A5b579F1}
吐槽
至于为什么给私钥,主要是怕有人一个不小心“手滑”删掉了钱包里面的账户(也就是过河拆桥),因为会合约交互了,那基本也就算得上入了门了,这个flag还是能给就给(不过还是没人解出来QAQ)
这一题还有个非预期:我没有清零,所以如果有人解出来了,别人就可以用前面那个人的地址进行确认,不过由于没有人解出来,所以这非预期我可以忽略不计…?(啪啪给自己两巴掌)
Sepolia外传
灵感
武林外传,BA最终章(不是,这也能刀?)
题目描述感谢LithosPriesteX师傅提供,咱是真的没灵感了www(发配到沙勒.jpg)
考点
简单的合约攻击与函数绕过(tx.origin和extcodesize()),预期难度2.8⭐
Writeup
在网上都能搜到原题,三重绕过我去掉了一重
POC如下:
1 | //SPDX-License-Identifier:MIT |
部署的时候要添加题目合约的地址作为参数,而且这种合约是一次性的,就部署完之后就没法进行第二次同样的攻击了(constructor只会调用一次这个还是知道的吧)
然后用攻击合约地址(注意不是个人账户地址)在靶机进行检验,如果成功则可以获取到flag:flag{c0ntR4ct_a7TacK_&_Con5tRuctOr_byp@Ss}
吐槽
为什么没人做,明明有原题的说QAQ
咱学艺不精,自己搞Docker搞了超久,结果还是这里出问题那里出问题,下次我就看看能不能在靶机上搞ganache-cli了,本地区块链至少不用连外网连API(土下座)
以上就是所有的题目,各位如果有疑问可以diss我,如果有需要附件的师傅也可以找我desu
总之就这么多啦,各位师傅们加油哦ヾ(≧ ▽ ≦)ゝ记得多带带我哦
- 本文作者: 9C±Void
- 本文链接: https://cauliweak9.github.io/2023/10/24/AuroraCTF2023-Misc-Blockchain-WP/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!