CTF系列文章
第一篇 CTF之密码学题目-classical && coding
第二篇 CTF之MISC题目-西游记
文章目录
- CTF系列文章
- 前言
- 一、题目是什么?
- 二、解题步骤
- 1.下载文件,解压
- 2.暴力破解
- 3.解压文件
- 4.处理文本文件
- 5.手动删除多余字符
- 总结
前言
CTF中关于MISC(杂项)的题目通常都比较有意思,很考察思维的发散性。下面的这道题就是需要灵活的思考,涉及暴力破解、编码、手动处理文本等多种手段。
一、题目是什么?
二、解题步骤
1.下载文件,解压
但是解压发现,文件是加密的,需要输入密码。这个时候,最简单的方式就是暴力破解,但是暴力破解需要有个大致的范围,我们简单猜测是8位的纯数字。
2.暴力破解
没有想到的是,这个密码居然真的这么简单,不愧为“简单题目”。密码顺利拿到之后,就可以解压文件了。
3.解压文件
打开文件:
可以发现这个文本里面嵌入了字母,而题目中已经提示了“flag格式为DASCTF{},括号内为数字与小写字母的uuid。”
所以接下来我们要处理文本文件了。
4.处理文本文件
根据提示,我们可以通过编写NodeJS代码,来处理一下文本文件:
const { readFile,writeFile } = require('node:fs/promises');
const { resolve } = require('node:path');
const {decode,encode} = require('iconv-lite');
try{
const filePath = resolve('C:\\Users\\Administrator\\Downloads\\西游记的附件\\tempdir\\MISC附件\\西游记.txt');
const contents = await readFile(filePath);
const text = decode(contents,'gb2312');
console.log(text.match(/[D|A|S|C|T|F|\{|\}]|\-|\d|[a-z]/g).join(''));
}catch(e){
console.log(e.message);
}
输出:
可以发现,这一串字符里面有很多混淆的内容。比如D-------------7529ASCTF{
里面这个-
和7529
就是混淆干扰。仔细看文本,这些干扰其实来自“本章字数:****”,接下来,我们需要替换掉这些字数,字数都是4位的整数,需要替换为空字符串""
。打开nodepad++,选中“搜索”->“替换”:
注意:打开文本时,鼠标焦点要放到最开始的位置,因为匹配是从焦点开始寻找。
可以看到最后替换完成之后的内容:
我们再次利用上次的NodeJS代码,执行一次,输出:
5.手动删除多余字符
根据提示"flag格式为DASCTF{},括号内为数字与小写字母的uuid。"
UUID的格式是8-4-4-4-12
的小写字母和数字。所以我们可以对文本"D-------------ASCTF{j4900bdff-3d75-11ed-aa7c-DDf889DDd2DDDDDD81b666DD}DDDDDDDDDDDDDDDDDDDDD{DDDDDDDDD"
进行删除,得到"DASCTF{j4900bdff-3d75-11ed-aa7c-f889d281b666}"
。最终我们得到答案:"j4900bdff-3d75-11ed-aa7c-f889d281b666"
总结
以上就是第二道CTF题目的解题过程和思路,可以发现,解题的过程充满了猜测和思考,这来源于经验积累,能够编码解决基本的文本处理任务,能够根据题目提示手动处理文本,有的时候手动处理比写代码还要快些o( ̄︶ ̄)o