刷题网站:攻防世界 https://adworld.xctf.org.cn/
MISC方向–新手场–第5题–stegano
下载附件,是一个pdf格式的文件
水印提示“No flag here”,非常懵逼,看了WP,知道原来需要用浏览器打开。
复制浏览器中的内容到编辑器,发现有:
于是书写脚本转换:
1.保存内容:(将带有AB的内容粘贴到TXT文件保存起来)
2.书写脚本(因为本人对于Java比较熟悉,所以现学了一点Python的“字符串替代”语法)
脚本如下:(可能写的不够简洁,毕竟是初学)
def read_file(filepath):
with open(filepath) as fp:
content = fp.read();
return content
# 把“A”换成“.”,把“B”换成“-”,把空格换成“/”
def changeContent(content):
result = content.replace('A','.')
result = result.replace('B','-')
result = result.replace(' ','/')
return result
loca = "ti/read.txt"
content = read_file(loca)
result = changeContent(content)
print(result)
脚本中:
第一个方法是read_file(filepath),主要功能是读取文件内容,传参是文件路径,读取的文件内容以字符串形式存入“content”
第二个方法是changeContent(content),主要功能是转换(把“A”换成“.”,把“B”换成“-”,把空格换成“/”),传参是文件读取的结果(这里在写脚本的 时候我遇到了一个坑,就是result.replace方法不改变原来字符串的内容,所以result.replace执行的结果一定要拿新的变量接收,否则最后return的结果还是原来的字符串)
转换结果:
-.-./—/-./–./.-./.-/-/…-/.-…/.-/-/…/—/-./…/–…--/…-./.-…/.-/–./—…/.----/-./…-/.----/…/.----/-…/.-…/…–/--/…–/…/…/…-/–./…–
然后需要摩斯密码解密:
解密网站:https://www.bejson.com/enc/morse/
解密结果:
CONGRATULATIONS,FLAG:1NV151BL3M3554G3
根据题目提示“提交格式为flag{xxx},解密字符需小写”
构造flag
flag{1NV151BL3M3554G3}—>flag{1nv151bl3m3554g3}
所以最终的flag就是flag{1nv151bl3m3554g3}
总结:
下载附件—》浏览器查看—〉粘贴内容到编辑器,发现重要的结构,判断摩斯密码—》转换格式—〉解密—》书写flag
补充:摩斯密码:
莫尔斯/摩尔斯电码(Morse code)是美国人莫尔斯于1844年发明的,由点(.)、划(-)两种符号组成:
一点为一基本信号单位,一划的长度=3点的长度。
在一个字母或数字内,各点、划之间的间隔应为两点的长度。
字母(数字)与字母(数字)之间的间隔为7点的长度。
莫尔斯/摩尔斯电码(Morse code)曾被用在间谍通信,电报,航海信号等各个领域。