CTF-1-凯撒密码
密文:DXR BL TEIATETU
1. 了解啥是凯撒密码?
- 原理:
- 通过把字母移动一定的位数来实现加解密,属于密码学里的换位密码。
- 明文中的所有字母从字母表向后(或向前)按照一个固定步长进行偏移后被替换成密文。
2.问题:不知道加密位数(密钥)是多少?
- 解决方案:
- 1.把每个可能的密钥循环一遍循环25次
- 2.循环密钥
- 3.循环输出解密后明文
- 4.观察最后的结果,发现KEY IS ALPHALAB
3.使用工具
- 因为python有很多包可以直接用,所以使用python介绍代码量,方便理解。
- 工具:pycharm
- 语言:python
源码:
# 凯撒密码破解
# 明文输入和定义
message = 'DXR BL TEIATETU'
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# key代表密钥
for key in range(len(LETTERS)):
# translated设为空字符串,每次循环后都要清空
translated = ''
#循环解密密文
for symbol in message:
if symbol in LETTERS:
num = LETTERS.find(symbol) # 在26个字母里搜索到密文字符的位置.find()
num = num - key
# 检查是否小于0,如果小于0,就加上26
if num < 0:
num = num + len(LETTERS)
# 把解密之后的字符追加到translated字符串的末尾
translated = translated + LETTERS[num]
else:
# 密文里的symbol如果不在26个字母里,就不进行解密,直接追加到字符串末尾
translated = translated + symbol
#快乐输出
print('%s' %translated)
4.观察输出结果
KEY IS ALPHALAB CTF-2-摩斯密码
密文:46 45 32 45 32 45 32 46 45 32 45 46 45 46 32 45 46 45 32
1. 了解啥是摩斯密码?
- 原理:
- 摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。是一种早期的数字化通信形式,但是它不同于现代只使用零和一两种状态的二进制代码。
- 它的代码包括五种: 点、划、点和划之间的停顿、每个字符之间短的停顿、每个词之间中等的停顿以及句子之间长的停顿。
2.问题:咋得都得先有摩斯密码的格式呀,一堆数字是个啥玩意。冲浪了一下,说有套路。咱也不知道,咱也不敢问呐。
- 解决方案:
- 1.数字是ascii码的十六进制数值Hex-》需要转换成ascii码。
- 2.观察得到规律,然后转换。
3.使用工具:
- Converter转换器
链接:https://pan.baidu.com/s/1d_0OA40-tia7n459xDUktQ 提取码:aile
4.最后得到并转换成摩斯密码格式,你就猜呗FE2 和 .- 空格
FE2E2E2FE2EFEF2EFE2 ---》》 .- - - .- -.-. -.-
最后将F替换为“.”,E换成“-”,2换成空格
通过在线摩斯密码转换得到ATTACK
CTF-3-栅栏密码
密文:fplhaagl{aabl}
1. 了解啥是栅栏密码?
- 原理:
- 栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。
- 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)
2.问题:不知道这密文是以多少个为一组?
- 解决方案:
- 1.把每个可能的组数重复几次
3.使用工具:在线栅栏密码工具
解密后的明文:flag{alphalab}
CTF-4-二维码creatbywho、
题目
1.二维码原理
- 在二维码的三个角处有位置探测区域,且为通用快。目的是为了方便扫码时对二维码进行定位。
- 对于二维码中有很多黑白相间的小点。扫码时:从右往左,从上往下读取图案的信息。白点=0,黑点=1。
- 黑白区域包含了数据和纠错码字
- 我们扫码时机器读取到的二进制信息会经过编码转化后变为有用信息。
2.问题:发现图片有缺少
3.使用工具
- 1.稿定抠图--在线抠图工具 www.gaoding.com/clip?id=751…
- 2.微信扫一扫
4.实验步骤
- 1. 对题目图片进行处理,得到处理后单块单块的结果。
- 2. 初步拼装可知图片缺少三块,查找二维码原理
- 3. 将题目打印,剪成单块单块,进行拼图,并通过微信扫一扫不断试错。
- 4. 具体方法:设定最中间这块保持不变。转动剩下的四个长条,先不考虑最右下角的那一小块。最后得到扫描成功的图片。
- 5.利用微信二维码扫描得到的结果如下图,我们也可得知这题的key为Create-By-SimpleLab。
CTF-5-隐身
题目链接:https://pan.baidu.com/s/1BOdkZQeEw-oAiJAJoVO_rA 提取码:a1ea
1. 了解啥是隐身和Base32编码
- 隐身术原理:信息隐藏,即不让计划接收者之外的任何人知道信息的传递事件(而不只是信息的内容)的一门技能。按照载体对象分类可以分为文本隐写术、图像隐写术、音频隐写术、视频隐写
- Base32:一种数据编码机制。主要用来把二进制数据编码成可见的字符串,其编码规则是:任意给定一个二进制数据,以5个位(bit)为一组进行切分(base64以6个位(bit)为一组),对切分而成的每个组进行编码得到1个可见字符。Base32编码表字符集中的字符总数为25=32个,这也是Base32名字的由来。
2. 问题:对zip密码的解码
- 解决方案:
- 1.利用Ziperello打开加密的ZIP压缩包
- 2.试验输入得到密码位数为6位
- 3.尝试爆破6位纯数字
3.使用工具
- Ziperello
链接:https://pan.baidu.com/s/1uldpxflhAD-CN7UbS_wljQ 提取码:xhjb - 在线base32编码解码器
https://www.qqxiuzi.cn/bianma/base.php
4.操作步骤
- 1.经过处理都打开发现压缩包中存在key的文档
- 2.对文档的处理,发现古诗下还存在一行空白行。猜想可能被隐藏。在word字体中去隐藏即可。
- 3.word最后一行出现Key:ORUGS43JONQWEYLTMUZTE43UOJUW4ZY。由刚刚的base32编码原理可知此为base32编码,通过线上工具进行解码。
- 最后得到KEY this is a base32 string。
CTF-6-银行卡密码
题目名:银行卡密码
1.银行卡密码应该没啥,都是六位数数字
2. 问题:对zip密码的解码
- 解决方案:
- 1.利用Ziperello打开加密的ZIP压缩包
- 2.试验输入得到密码位数为6位
- 3.尝试爆破6位纯数字
3.使用工具:
- Ziperello
链接:https://pan.baidu.com/s/1uldpxflhAD-CN7UbS_wljQ 提取码:xhjb
4.直接爆破?!这题也太简单了吧
最后的 KEY{luffy_and_jet}
CTF-7-在表格里
题目名:在表格里
1.打开图表,有点奇怪,里面有几个表+一张图片,图片下有The flag is under this nicely made chart. flag在这张精美的图表下面。猜想可能是隐藏起来了。
2. 问题:
- 解决方案:
- 1.先尝试改个后缀名,通过解压打开查看里面内容。
- 2.然后里面有个文件是key,
- 后来查看了一下,word文件也能改为zip后缀 ,然后向其中添加文件即可
7.zip(官网可直接下载,贼小贼好使!),winRAR不咋好使
4.在文件夹中flag.txt中的{Sh1YanBa}为答案
5.视频操作
链接:https://pan.baidu.com/s/1Sq5aPwJJ-rv9ZNIRNyg-bQ 提取码:gpja
CTF-8-give me five
题目名:give me five
这个 Android 应用程序中隐藏了怎样的信息?(提示:不要放过任何一点蛛丝马迹)
Tip:flag为32位字符串
1.打开文件.apk,mmmm这是啥的后缀名呢?
- Android安装包
- “Sis或Sisx的文件格式。apk文件和sis一样,把android
sdk编译的工程打包成一个安装程序文件,格式为apk。
- APK文件其实是zip格式,但后缀名被修改为apk,通过7.Zip解压后,(可以看到Dex文件,Dex是DalvikVM Mobile中的PE文件有区别。”)瞅到raw文件下有个fivefivefive.wav,首先这是一个视频/音频格式文件,其次five和题目的fivehi诶嘿,相得益彰然后我们再投机取巧哈哈哈哈,用Au(全称:Adobe Audition)打开噶,然后发现他的节奏跳动,很有特点哦。
2. 问题:
解决方案:
1.通过7.zip进行解压
2.得到128位二进制数之后根据题目要求,题目要求得到32位字符!这时候要想到二进制编码和字符编码!!
3.使用工具:
- Au(全称:Adobe Audition)
链接:https://pan.baidu.com/s/1vrMROvOZDyAEUbu9idFM1A 提取码:gl64 复制这段内容后打开百度网盘手机App,操作更方便哦
- 转换神器--二进制转字符串
java -jar 转换神器_JRK.jar链接:https://pan.baidu.com/s/1V1hqoLUrVEHh9mDxaHSg2w 提取码:35df 复制这段内容后打开百度网盘手机App,操作更方便哦
4.具体操作
- 打开Au
- 观察出规律后,我们将低位为0,高位为1
- 最后得到01110011111110111111101001010000111010101110010111111011000111001000110111111111111110011010100111101011011110001100000110011110
- -》共为128位
- 打开转换神器,将128位二进制数输入其中,
在上面的菜单点击binary --> binary format -> binary to number
- 因为根据题目要求32位字符串,得知是二进制转换为字符编码,我们可得:
- 按照字符编码的规则,将128位二进制分为8位一组
01110011 11111011 11111010 01010000 11101010 11100101 11111011 00011100 10001101 11111111 11111001 10101001 11101011 01111000
11000001 10011110
- 最后转化为32位字符,得到
3j 7r 7q 2g 7a 75 7r s 4d 7v 7p 59 7b 3o 61 4u
链接:https://pan.baidu.com/s/1VfuiVThlTFxLc2Rx8GsETQ
提取码:o1dl
拓展:
二进制与字符编码
计算机能识别的只有1和0,也就是二进制,而1和0可以表达出全世界的所有文字和语言符号。
我们人类采用的是十进制算术法,主要原因是因为我们有10个手指头。如果我们只有2个手指头的话,我们就会用二进制计数,就会逢二进一。
那可能是这样计数的:1,10,11,20,21,30,31,40。。。。。。其中1代表十进制中的1,10代表10进制中的2,11代表十进制中的3,20代表10进制中的4。。。。。。不过这样太麻烦了,我们可以用纯2进制表达,因为是逢二进一,所以除第一位外,每一位肯定是前一位的两倍。 比如1在二进制中还是用1表示;2在二进制中用10表示,其中1是2的一次方;3在二进制中用11表示;4用100表示,5用101表示。。。。。。从第一位开始的数字(1或0)乘以2的0次方,然后依次是乘以2的1次方,2次方,3次方直到无限大,得出的数就是十进制。所以,虽然电脑只认识0和1,但是可以表达任何数字。
因为美国是用字母的,那么如何让计算机去断字呢?
要知道,计算机读的一堆二进制数字是没有空格的。解决办法是用8个二进制代表一个字母或符号,因为8个二进制可以表达的最大数是255,正好用8个二进制就能表示了,那干脆所有的都用二进制表示吧。
那你老美的编码问题解决了,我们中国呢?中国文化博大精深,我们可以有上万个汉字呢。于是我们于1980年推出了自己的GB2312编码,支持常用的汉字。后来又相继推出了 GBK1.0和 GB18030,简单说后来推出的就是支持更多的汉字,而且支持少数民族文字和日韩里面的所有汉字。其他国家也纷纷推出了自己国家的字符编码。那么问题来了,如果把一个国家出的软件,装到另一个国家的操作系统里面,由于编码不同,就会出现一些乱七八糟的东西,简称乱码。
为了解决这个问题,ISO(国际标准化组织)于推出了Unicode,也就是万国码。在万国码中,每个字符用16个二进制来表示。按理说,这个问题为完美解决了,但是老美不干了,我们以前用8个二进制就能表示的,你现在让我们用16个二进制来表示,那不是白白浪费空间吗。为了安抚老美,utf-8诞生了。 UTF-8,是对Unicode编码的压缩和优化,简单说就是对ASCII码的内容用1字节保存,欧洲的字符用2个字节保存,东亚的字符用3个字节保存. 现在世界上使用最广泛的编码。不过这样咱们吃亏了啊,咱们以前是用2个字节的。
在操作系统方面windows中文版默认是用GBK编码,Mac OX和linux是用utf-8。
python2默认是用ASCII编码,不过到了python3默认就用utf-8了。不过python2可以在代码的第一行加上如下声明,这样就会用utf-8去解码了。
源自:https://www.cnblogs.com/lshedward/p/9901732.html
可真有意思哈哈哈哈
CTF-9-0X01
题目名:真实的摩斯密码
1.思路:题目提供一个wav文件,用Au打开文件后可以清楚的听出长短不同像嘀嗒一样的声音,所以首先应该想到摩斯密码,但是声音播放的很快,我们肯定不能真的做到听音识摩斯密码,所以使用Au查看。
2.问题
- 如何判断在此图谱中的长短音和分割各代表啥??
- 摩斯密码的点和横,短音为 . 分割为-(哦!这就是为啥-叫分隔符啦),长音为 (空格)。
3.使用工具
- Au
- 在线摩斯密码翻译器
- 题目wav:下载地址为:链接:https://pan.baidu.com/s/1t9xUBZRds3iZowfI6auHZw 提取码:jm60 Au下载在CTF-8有下载链接
- 最后得到摩斯密码:.- .-.. .--. .... .- .-.. .- -...
- 通过在线摩斯密码转换得到中,得到最终答案:“alphalab”。
链接:https://pan.baidu.com/s/1QF4oRIgWPiOOY08FfR4C_g
提取码:qi20
复制这段内容后打开百度网盘手机App,操作更方便哦
CTF-10-Sniffer
1.sniffer--嗅探器
题目链接:https://pan.baidu.com/s/1IBpTwx6ivii2MFR1t44zYQ 提取码:pxpu
原理:
- 嗅探器是一种监视网络数据运行的软件设备,协议分析器既能用于合法网络管理也能用于窃取网络信息。网络运作和维护都可以采用协议分析器:如监视网络流量、分析数据包、监视网络资源利用、执行网络安全操作规则、鉴定分析网络数据以及诊断并修复网络问题等等。
- 非法嗅探器严重威胁网络安全性,这是因为它实质上不能进行探测行为且容易随处插入,所以网络黑客常将它作为攻击武器。
2.问题
- 打开1.html文件后,需要密码?如何生成?
3.工具
- RAR爆破
- 链接:https://pan.baidu.com/s/1rkPQ3hs-JiLm6_jzr7KFRw 提取码:2khd 复制这段内容后打开百度网盘手机App,操作更方便哦
- 超级字典生成器
- 链接:https://pan.baidu.com/s/1wj9VX_tzId1HG-ynSyhXjQ 提取码:uttp
4.操作步骤
1.生成字典其中包含所有的5位数字superdic.txt
2.修改词典,在密码前插入nsfocus ,最后形成字典superdic1.txt
3.使用rar破解工具中的字典破解来破解key.rar的密码,最后将最后结果以flag.txt输出。
4.输入密码打开rar文件,发现yes.txt,打开得到flag{NCTF_R4r_Cr4ck}
5.此题小白对工具的使用,可能存在难度,附上视频操作
链接:https://pan.baidu.com/s/10U_P0K9Msmibhy6-rmCmxw 提取码:cf4u
CTF-11-哆啦A梦
题目名:哆啦A梦
题目链接:https://pan.baidu.com/s/1Sc5aXroCnsMBtbufNj8sUg 提取码:23u2
1.原理:
- 图片隐写(咋考虑到的,因为打开压缩包进去就瞅到个jpg图)
2. 问题:
- 隐写工具的使用
- 1.通过7.zip进行解压题目ameng.rar
- 2.使用工具(隐写图片查看的神器)
4.具体操作
- 运行Stegsolve.jar包:
java -jar Stegsolve.jar- 运行后导入图片,选择Frame Browser帧浏览器
- 帧浏览器:主要是对GIF之类的动图进行分解,动图变成一张张图片,便于查看。翻到第二帧就可以看到key了。
Key:simCTF{ctfstega}
- Stegsolve.jar工具链接:https://pan.baidu.com/s/1Ih99OrC-M7w9ezMFdYpCkw 提取码:mqx8
- 链接:https://pan.baidu.com/s/1PZ7zivCFVK2_0W7xrtnVrQ 提取码:0vlt
- stegsolve功能简介:
- 上面是软件打开的界面,界面简单。主要供能为analyse。
- 下面对Analyse下面几个功能键作简单介绍:
- File Format:文件格式,这个主要是查看图片的具体信息
- Data Extract:数据抽取,图片中隐藏数据的抽取
- Frame Browser:帧浏览器,主要是对GIF之类的动图进行分解,动图变成一张张图片,便于查看
- Image Combiner:拼图,图片拼接
CTF-12-到处都是广告
题目名:到处都是广告
下载打开后是一张jpg图片
1.原理:
- 广告?mmm研究研究图片,打开美图秀秀调调色度啥的,看看最表层有没有啥东西。
2. 问题:
- 解决方案:
- 通过对图片的表层处理可以发现在右边有一张二维码,扫一扫得到一串16进制数
- 打开winhex将数输入,输入后在右框发现test.pcy
- pyc是啥呢?浅说是py的中间式文件,看后面的拓展。
3.使用工具
- 美图秀秀
- winhex
- pyc,pyo反编译python反编译在线网址工具: tools.bugscaner.com/decompyle/
- 解码工具
- 链接:https://pan.baidu.com/s/1t2wzzQ1_q0zwNRkSaq0ZaA 提取码:wlzk
4.具体操作
- 打开美图秀秀把对比度和曝光度调到最大
- 微信扫一扫,结果导入到winhex,导出成test.pcy
- 使用在线工具导成py文件。
- 查看py文件内的函数,可知函数的过程目的将链表中的16进制转换为字符,用万能解码工具,最后得到flag为AlphaLab
- 链接:https://pan.baidu.com/s/1fSJYT4rjh1dG6OG3JA5tcQ 提取码:hb2l 复制这段内容后打开百度网盘手机App,操作更方便哦
6.拓展:
- py与.pyc文件区别
- 原来Python的程序中,是把原始程序代码放在.py文件里,而Python会在执行.py文件的时候。将.py形式的程序编译成中间式文件(byte-compiled)的.pyc文件,这么做的目的就是为了加快下次执行文件的速度。
- 所以,在我们运行python文件的时候,就会自动首先查看是否具有.pyc文件,如果有的话,而且.py文件的修改时间和.pyc的修改时间一样,就会读取.pyc文件,否则,Python就会读原来的.py文件。
- 其实并不是所有的.py文件在与运行的时候都会产生.pyc文件,只有在import相应的.py文件的时候,才会生成相应的.pyc文件
CTF-13-打不开的文件
2. 问题:
- 文件无法正常打开,用winhex文件头以39 61 开始,经过查看各种文件标志头可知gif的开始标志是47 49 46 38。
3.使用工具
- winhex
- Steslove
- 在线base64编码,解码
4.具体操作
- 1.用winhex打开,在开头插入四个字节分别输入47 49 46 38
- 2.再次打开图片,出现闪动的key
- 3.运行Stegsolve.jar包:
java -jar Stegsolve.jar- 4.用Steslove帧浏览逐帧查看图片,用stegsolve打开gif文件,选择analyse中的frame broswer逐帧浏览图片
- 记录key是个base64编码,解码即可得key。
- Stegsolve.jar工具链接:https://pan.baidu.com/s/1Ih99OrC-M7w9ezMFdYpCkw 提取码:mqx8
- 链接:https://pan.baidu.com/s/1RwjF6_yXHoDKl9MZbUWLtw 提取码:k6pg
CTF-14-眼见为实
题目名:眼见为实
文件:zip
题目链接:https://pan.baidu.com/s/1Z34Qscvd0mZUi1Ux913gZg 提取码:qbmz
1.原理:
- 各类文件头都有自己的格式
- 各类文件头集合:blog.csdn.net/rrrfff/arti…
2. 问题:
- 文件以zip命令,用winhex打开文件查看头以50 4B 03 04开始,64 6F 63 78 9D.docx文件后缀。
3.使用工具
- winhex
4.具体操作
- 1.用winhex打开,发现zip文件名开头。选择另存为zip.zip文件
- 2.再次打开zip.zip发现里面有 眼见非实.docx。
- 3.用winhex再打开,发现仍然是zip文件夹的后缀名,再另存为眼见为实.zip文件
- 4.打开眼见为实.zip---》打开.xml页面文件
- 得到flag
- 链接:链接:https://pan.baidu.com/s/1bb-XTK0v--Kd3fkeoiJchA 提取码:44iw
CTF-15-!!
题目名:!!链接:https://pan.baidu.com/s/1wojIxapEYvyUBxBOB-dHeA 提取码:0h7l
1.原理:
- Brainfuck和Ook加解密--解释器--好牛逼的亚子--->tool.bugku.com/
2. 问题:
- 不知道它在说啥玩意??
3.使用工具
4.具体操作
- 1.将看不懂的txt题目复制--->点击Ook!to Text
- flag{bugku_jiami}
CTF-16-聪明的小羊
tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren.
1.原理:
- 栅栏密码-->分组
2.使用工具
3.具体操作
- the anwser is wctf{C01umnar},if u is a big new,u can help us think more question,tks.
CTF-17-不是一个人在战斗
1.原理:
- GIF,jpg的头文件
2.问题
- winhex打开1.jpg后,头文件是FFD8有问题,猜想可能是压缩在一起了。
3.使用工具
- winhex
- stegsolve
4.具体操作
- 全局查找FF D9文件头。(FF D9是十六进制数字)--->在搜索中查找16进制数值-->为了便于观看后缀名--->.zip的压缩包头文件是50 4B 03 04 验证猜想。
从50 开始右键选择选块开始-->到最后00选块结束。选择复制选块到新文件中--》命名为.zip,打开压缩包,发现gif.gif文件损坏
用winhex打开-->在头文件输入-->47 49 46 38 另存为,然后用stegslove逐帧展示即可
- 小提醒:选择-->列表搜索提示,便于观看。