this_is_flag
题目
Most flags are in the form flag{xxx}, for example:flag{th1s_!s_a_d4m0_4la9}
解决方案
不必多说抄就完事儿。
题目
菜猫给了菜狗一张图,说图下面什么都没有
解决方案
题目给了提示答案藏在图下,将PDF转DOC,获得flag。
flag{security_through_obscurity}
stegano
题目
菜狗收到了图后很开心,玩起了pdf 提交格式为flag{xxx},解密字符需小写。
解决方案
下载pdf附件。
打开后将其内容复制到记事本,发现一串AB的字符。
得到一串AB的代码:
BABA BBB BA BBA ABA AB B AAB ABAA AB B AA BBB BA AAA BBAABB AABA ABAA AB BBA BBBAAA ABBBB BA AAAB ABBBB AAAAA ABBBB BAAA ABAA AAABB BB AAABB AAAAA AAAAA AAAAB BBA AAABB
接下来我们把“A”换成“.”,把“B”换成“-”,通过脚本:
string = "BABA BBB BA BBA ABA AB B AAB ABAA AB B AA BBB BA AAA BBAABB AABA ABAA AB BBA BBBAAA ABBBB BA " \
"AAAB ABBBB AAAAA ABBBB BAAA ABAA AAABB BB AAABB AAAAA AAAAA AAAAB BBA AAABB"
for each in string:
if each == 'B':
print("-", end="")
elif each == 'A':
print(".", end="")
elif each == ' ':
print(" ", end="")
得到:
-.-. --- -. --. .-. .- - ..- .-.. .- - .. --- -. ... --..-- ..-. .-.. .- --. ---... .---- -. ...- .---- ..... .---- -... .-.. ...-- -- ...-- ..... ..... ....- --. ...--
- 解密摩斯密码,得到:
CONGRATULATIONSFLAG1NV151BL3M3554G3
flag为:
flag{1nv151bl3m3554g3}
如来十三掌
题目
菜狗为了打败菜猫,学了一套如来十三掌。
解决方案
下载附件,发现里面是一堆佛语…?
看了wp,才知道一个叫做与佛论禅的网站(-。-)
其实还是蛮好玩的,拖进去解密
解密完我又卡住了(base64弄不出来啊喂),再看一眼wp才知道要先rot13(由于题目提示了如来十三掌)解密再用base64解密(太难顶了)。
然后稍微了解了一下rot13,跟大一年做过的一些程设题差不多,将所有字母都加13,类似于A + 13 = “N”,B + 13 = “O”……然后溢出的减去26。
同时由于字母只有26个,两次rot13后就会回到本身的字母。
ROT13(ROT13(x))=ROT26(x)=x
rot13解密一下
再base64解密。
得到flag。
give_you_flag
题目
菜狗找到了文件中的彩蛋很开心,给菜猫发了个表情包。
解决方案
打开是一张GIF文件,其中有一帧是二维码。
直接在PS打开就行了……或者找一个逐帧分析GIF的工具。
https://lingxiaoyi.github.io/umi-imgcrop/#/
不过这个二维码是扫不出来的……查一下有关二维码的知识,缺少了三个定位点。
找个定位符加上去就行了。
坚持60s
题目
菜狗发现最近菜猫不爱理他,反而迷上了菜鸡。
解决方案
一个绿帽子碰撞游戏,貌似移出屏幕就可以避免被碰撞了。
也可以用Java Decompiler反编译一下,在其中一个类中找到了flag。
base64解码提交就行。
gif
题目
菜狗截获了一张菜鸡发给菜猫的动态图,却发现另有玄机。
解决方案
得到一个图片包,里面有104张黑白图片,盲猜二进制,黑为1,白为0,写个脚本转化一下就可。
message = [0b1100110, 0b1101100, 0b1100001, 0b1100111, 0b1111011, 0b1000110, 0b1110101, 0b1001110, 0b1011111, 0b1100111,
0b1101001, 0b1000110, 0b1111101]
for each in message:
print(chr(each), end="")
# 得出结果: flag{FuN_giF}
掀桌子
题目
菜狗截获了一份报文如下c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2,生气地掀翻了桌子(╯°□°)╯︵ ┻━┻
解决方案
这个加解密的方式还是挺好猜的,字母最大为f,猜16进制,于是两个一组。
十六进制转为二进制,7位数一组(ASCII码就用到7位)。
将二进制转为Ascii码
base64stego
题目
菜狗经过几天的学习,终于发现了如来十三掌最后一步的精髓。
解决方案
这道题在Aurora CTF 2019见过了,关于Base64隐写。
import base64
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('stego.txt', 'rb') as f:
bin_str = ''
for line in f.readlines():
stegb64 = str(line, "utf-8").strip("\n")
rowb64 = str(base64.b64encode(base64.b64decode(stegb64)), "utf-8").strip("\n")
offset = abs(b64chars.index(stegb64.replace('=', '')[-1]) - b64chars.index(rowb64.replace('=', '')[-1]))
equalnum = stegb64.count('=')
if equalnum:
bin_str += bin(offset)[2:].zfill(equalnum * 2)
print(''.join([chr(int(bin_str[i:i + 8], 2)) for i in range(0, len(bin_str), 8)]))
跑一下拿到flag。
功夫再高也怕菜刀
题目
菜狗决定用菜刀和菜鸡决一死战
解决方案
这题是毫无头绪的……只能看着wp复现一波。
给的流量包通过foremost分离,得到一个zip包,里面有flag.txt文件。
当然肯定还是要找解压密码的,哪会这么简单呢= 。=
打开流量包,先追踪了一波TCP流,好像没有得到什么东西,看了wp,知道了先搜索flag字符串(?),然后一个个关键词的包找下去。
可以在第1150个包看到了6666.jpg。
追踪TCP流,在第七个流中找到了图片文件。
JPG文件以FFD8开头,以FFD8结尾,将其截出来。
在winhex打开,另存为一个图片,得到压缩包的密码。
解压得flag。
ext3
题目
今天是菜狗的生日,他收到了一个linux系统光盘
解决方案
这题也不懂得怎么做,看了wp知道了要把它拉到linux系统下面。
于是这里用了虚拟机,把文件拉到目录下面,
挂载到系统上。
mount命令用于加载文件系统到指定的加载点。此命令的最常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,Linux并不会自动挂载,必须使用Linux mount命令来手动完成挂载。
挂载完之后就可以直接访问了,找到flag.txt,base64解码。
SimpleRAR
题目
菜狗最近学会了拼图,这是他刚拼好的,可是却搞错了一块(ps:双图层)
解决方案
这就又触及到我的知识盲区了。
解压之后有一个flag.txt文件,里面只含有一句”flag is not here”。
解压文件的时候会报错”secret.png”已损坏。
rar对png的文件类型编码是74,就在flag.txt文件结束,这里是7A,所以改过来就行了。
之后打开就有图片了。
打开之后啥也没有,用ue打开,查看文件头,发现是gif文件。
看提示说用stegsolve打开,于是尝试了一下,发现了半截二维码。
再结合题目给的提示,说两个图层,就想到用PS打开了。
分离两个图层,分别用stegsolve打开。
图层一:
图层二:
接下来就是把它们拼起来了。