这次隼目CTF是跟sean组队,基本都是靠他撑着
我一个web蒟蒻就是一划水的,web不出意外的又爆零,misc倒是看了几道题(笑)
sign in
前几步还挺简单,一开始提示凯撒加密,很容易在偏移量为1的时候解码出正常数据

直接base64转图片即可,然后把图片下下来开始各种…(stegsolve,rgb爆破等等)均无果
最后死也没想出来是什么隐写…出题人上hint说是《非本地隐写》,BYD非本地隐写是在线隐写是吧

当时刚刚接触CTF的时候,一开始啥也不会,在网上随便搜就搜到的是这种隐写
后来学了其他“正统”方法,这种早被我扔脑后了(悲)
夜观天象
给了一个html文件,让我们在里面找东西
而网页打开就是普通的歌词而已,也没别的
但是发现源码里面有RGB,一开始还是考虑什么RGB隐写啥的
后来发现全部抄下来16进制转换后就能得到具体信息(gift is p@sswd)
至于这个wav,常规隐写思路是看audacity
但是这音频就是放了首歌,看破头也没在audacity里面看出来什么东西
于是乎搜索“带有key的wav隐写”后,找到了silenteye和deepsound两个工具
分别试了一下,deepsound没东西,silenteye成功拿到flag.txt
这里有两个注意点,第一我们要输入的密码是p@sswd而不是gift
第二就是前后都要输一遍才能正确解密,(如下图),我一开始捣鼓了好久

1 2 3 4 5
| 我夜观天象,算出你将会得到flag
天象='角木蛟 觜火猴 箕水豹 毕月乌 氐土貉 毕月乌 轸水蚓 女土蝠 尾火虎 昴日鸡 壁水貐 箕水豹 尾火虎 奎木狼 心月狐 张月鹿 尾火虎 井木犴 昴日鸡 柳土獐 角木蛟 女土蝠 室火猪 觜火猴 氐土貉 奎木狼 牛金牛 箕水豹 亢金龙 胃土雉 房日兔 翼火蛇 尾火虎 轸水蚓 箕水豹 尾火虎 尾火虎 壁水貐 牛金牛 亢金龙 氐土貉 箕水豹 翼火蛇 翼火蛇 亢金龙 女土蝠 星日马 角木蛟 壁水貐 井木犴 角木蛟 牛金牛 箕水豹 柳土獐 室火猪 张月鹿 心月狐 星日马 角木蛟 虚日鼠 亢金龙 参水猿 箕水豹 箕水豹 尾火虎 翼火蛇 斗木獬 参水猿 心月狐 尾火虎 张月鹿 张月鹿 虚日鼠 星日马 斗木獬 室火猪 氐土貉 鬼金羊 角木蛟 娄金狗 斗木獬 井木犴 壁水貐 斗木獬 氐土貉 星日马 轸水蚓 氐土貉'
|
搜索一下,网上并没有这种编码
再看看,发现解密过程可以参考HSCSEC CTF2023的题,直接抄网上脚本就可以了
但是有点不太一样喵,四进制没凑出来(实际上是可以的,参考yolo师傅的wp)
我尝试了二进制,如图进行编码对应

然后网上找个脚本改一下,运行出结果直接扔到赛博厨子就出来了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| 东方青龙='角木蛟、亢金龙、氐土貉、房日兔、心月狐、尾火虎、箕水豹'.split('、') 北方玄武='斗木獬、牛金牛、女土蝠、虚日鼠、危月燕、室火猪、壁水貐'.split('、') 西方白虎='奎木狼、娄金狗、胃土雉、昴日鸡、毕月乌、觜火猴、参水猿'.split('、') 南方朱雀='井木犴、鬼金羊、柳土獐、星日马、张月鹿、翼火蛇、轸水蚓'.split('、')
str=''' 角木蛟 觜火猴 箕水豹 毕月乌 氐土貉 毕月乌 轸水蚓 女土蝠 尾火虎 昴日鸡 壁水貐 箕水豹 尾火虎 奎木狼 心月狐 张月鹿 尾火虎 井木犴 昴日鸡 柳土獐 角木蛟 女土蝠 室火猪 觜火猴 氐土貉 奎木狼 牛金牛 箕水豹 亢金龙 胃土雉 房日兔 翼火蛇 尾火虎 轸水蚓 箕水豹 尾火虎 尾火虎 壁水貐 牛金牛 亢金龙 氐土貉 箕水豹 翼火蛇 翼火蛇 亢金龙 女土蝠 星日马 角木蛟 壁水貐 井木犴 角木蛟 牛金牛 箕水豹 柳土獐 室火猪 张月鹿 心月狐 星日马 角木蛟 虚日鼠 亢金龙 参水猿 箕水豹 箕水豹 尾火虎 翼火蛇 斗木獬 参水猿 心月狐 尾火虎 张月鹿 张月鹿 虚日鼠 星日马 斗木獬 室火猪 氐土貉 鬼金羊 角木蛟 娄金狗 斗木獬 井木犴 壁水貐 斗木獬 氐土貉 星日马 轸水蚓 氐土貉 '''.split() flag='' for i in str: number=[i[a*3:a*3+3] for a in range(4)] for x in number: if x in 东方青龙: flag+='01' if x in 北方玄武: flag+='00' if x in 西方白虎: flag+='10' if x in 南方朱雀: flag+='11' flag+=' ' print(flag)
|

base1024
这题网上搜一下就有对应资料,解码就行
1 2 3 4 5 6 7 8 9 10
| if __name__ == "__main__": b_已解字节内容 = h_千字文解码( "利师迩鉴石碣遥逍汉玄珍覆穑碣云罗侈平同此竹岱饭乎见槐洛五伦璧策缘芸武秦伤阮空创欲雁刻分超任策迩释机于焉笃僚施迩姿植沙疫书曲亲零零零" ) b_文本内容 = b_已解字节内容.decode("utf-8") print("解码好的:" + b_文本内容)
|
最后,欢迎大家去seandictionary那里看crypto的wp
也欢迎大家去yolo和st4rr师傅那里看他们的wp,有更多思路