本文习题均出自攻防世界的MISC新手区,链接如下:
攻防世界
有一位前辈的文章对我有很大帮助,包含了很多CTF的解码方式,我把网址放在前面,希望对和我一样刚开始接触CTF的小白一些帮助。
CTF中常见密码题解密网站总结
答案就在题目中。
flag{th1s_!s_a_d4m0_4la9}
题目中说图下面什么也没有,我们就猜测图下面有东西。为了看到图片下面的东西,我们将下载的PDF文件转换成word文件,可以看到图片下隐藏的flag。将图片移开,看的更加清楚。下面附上一个可以在线将PDF文件转换成word文件的网站:
flag{security_through_obscurity}
打开文件,发现里面有很多黑色图片和白色图片,和二进制中的1和0很像,于是黑图片为1,白图片为0,得到一串二进制数,将二进制转为字符,就能得到flag。(有的编程大佬可以通过写脚本来直接生成flag,这里由于本人实力有限,只能一个一个对照。本人正在学python,等我会写脚本了,再来补充。)
附二进制转文本网站
二进制转文本
flag{FuN_giF}
打开文件得到一段玄乎的文字,这种编码被称为“与佛论禅”,通过与佛论禅编码,可以得到一串新的编码。
这里提醒两点:
1.要在编码前加上“佛曰:”
2.解码时注意密文在解码网站上的位置不要弄错了,本人就是一开始位置放错了,一直显示解码失败。
附上与佛论禅解码网站:
与佛论禅解码
然后注意到题目是“如来十三掌”,这个“如来”对应的是“与佛论禅”,这个“十三”对应的是另一种叫做“ROT13”的编码。ROT13编码后得到一串代码。
附ROT13编码网站:ROT13编码
这依然不是最后的答案,最后再用一种最常见的编码形式:base64,就可以得到最后的flag。
附base64解码网站:
base64解码
flag{bdscjhbkzmnfrdhbvckijndskvbkjdsab}
下载附件中的动态图。从中可以看出动态图中有一张图片里有二维码。于是使用ps打开动态图,在右下角的图层中找到了带有动态图的图层。却发现这张二维码是不完整的(缺少了三个角位置处的定位符)于是在网上随便找一个完整的普通二维码,利用ps将三个定位符截下来补充到不完整的二维码中。扫描二维码,得到flag.
flag{e7d478cf6b915f50ab1277f78502a2c5}
下载附件,是一个.jar类型的,是一个小游戏。这里我们需要一个反编译器,查看小游戏的源代码。这里我用的是jd-gui。根据源码来看,这个游戏坚持60s后还真能得到flag,想试试的可以试一下,本人最多到三十多秒就不行了。
附上下载链接: jd-gui
在源代码里找到flag:
flag{RGFqaURhbGlfSmlud2FuQ2hpamk=}
题目中给了一串很长的字符串,由小写字母和数字组成,这种形式我们首先判断是十六进制,两个字符一组转换为十进制的数,因为我们最终要得到flag的字符串,所以考虑将得到的十进制数转为acill码,因为acill的范围为0~127,所以要将得到的十进制数每个减去128,才能落在acill表上。
flag{hjzcydjzbjdcjkzkcugisdchjyjsbdfr}
下载附件,是一个pdf文档,里面满是英文字符串:
上面的水印已经告诉我们flag不在这里,那么肯定是进行了隐写。全选文档内容,粘贴到txt文本中进行查看:
发现在txt中打开后多了一串由AB组成的字符,这应该就是隐写的内容。这种形式考虑摩斯密码,我们把“A”换成“.”,把“B”换成“-”,得到:
-.-. — -. --. .-. .- - …- .-… .- - … — -. … --…-- …-. .-… .- --. —… .---- -. …- .---- … .---- -… .-… …-- – …-- … … …- --. …–
解密摩斯密码,得到:
CONGRATULATIONSFLAG1NV151BL3M3554G3
flag{1NV151BL3M3554G3}
下载附件,是一个rar压缩包,里面只有一个txt文件,用winhex打开,确实什么都没有。
那就是压缩包有问题了,用winhex打开rar压缩包,发现压缩包里面应该还有一个secret.png的图片,因为某种原因没有显示出来。
因为压缩包可以显示txt文件,不能显示png文件,所以我认为问题一定出在两个文件之间,也就是这个范围:
在网上查了一下rar的文件格式,发现rar 文件块的开头是 A8 3C 74,字块的开头是A8 3C 7A,我们需要文件块而不是子块,于是更改 A8 3C 7A 为 A8 3C 74 ,保存后再次打开压缩文件,发现图片出来了:
但是打开图片,是一片空白,于是用winhex打开看看哪点有问题,发现文件头是GIF文件的文件头
于是将后缀改为.gif后打开,发现还是空白。既然是GIF文件,那肯定有多个图层,于是用ps打开,发现一共有两个图层,都是空白,猜测是对图片内容进行了隐写,于是用ps导出这两个图层:
然后将两个图片分别放入StegSolve中,发现图片中隐藏的信息,是两段二维码
将两段二维码连接起来,然后再添加定位符进行修补,最后得到一个完整的二维码:
然后扫描二维码,得到flag:
flag{yanji4n_bu_we1shi}
下载附件,里面是一个txt文件,发现里面有很多的base64编码
然后直接到解码网站去解密一下:BASE64加密解密
得到了一大段英文,去翻译一下:
好家伙,这是在给我科普隐写术呢,从头看到尾,发现没有什么问题。
然后搜索一下BASE64解密,发现有一种专门用这种大量的BASE64编码的加密形式,加密的原理运用了BASE64的加密解密原理,详情参考彻底搞懂base64加解密原理和隐写技术
然后利用这一原理,我们写个脚本,进行解密(我在网上找的脚本)
import base64
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('stego.txt', 'rb') as f:
flag = ''
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('=') # no equalnum no offset
if equalnum:
bin_str += bin(offset)[2:].zfill(equalnum * 2)
#flag += chr(int(bin(offset)[2:].zfill(equalnum * 2), 2))
#print(flag) #这样写得不出正确结果
print([chr(int(bin_str[i:i + 8], 2)) for i in range(0, len(bin_str), 8)])
结果如下:
把字母拼接起来,得到flag:
flag{Base_sixty_four_point_five}
下载附件,是一个没有后缀的文件,还挺大,十几兆的,放进winhex,试着 Ctrl+F查询一下flag,发现了一个flag.txt文件。
然后给这个文件加上.zip后缀,可以看到里面有很多文件:
如果不知道里面有个名叫flag.txt的文件的话,在这里面要找半天,我们已经知道里面有个叫flag.txt的文件了,直接在右上角使用文件搜索,直接找到flag.txt
打开flag.txt,发现一行密文,看着像是BASE64编码:
试着去BASE64解码,直接得到flag,有点出乎意料。
flag{sajbcibzskjjcnbhsbvcjbjszcszbkzj}
下载附件,是一个后缀为pcapng的文件,也不知道是什么文件,查了一下也不是很明白,差不多是一个流量包文件,应该是需要用wireshark进行流量分析的
我们先用binwalk看看里面有没有包含东西:
可以看到里面有个zip文件还有flag.txt,于是我们使用foremost分解一下,分离出来一个带密码的zip文件:
我们手里只有之前附件里的那一个文件,所以密码也只能从那个文件里获取,之前提到可能要用到wireshark,于是用wireshark打开附件,尝试着用Ctrl+F查找flag字符串(注意选择分组字节流)
总共有八个字节流都含有flag字符串,每个都打开对比一下,发现只有第1150个字节流多了个6666.jpg文件,其他七个只有其他三个文件,于是将目标锁定在6666.jpg文件。
在第1150字节流的地方点击右键,选择追踪流,选择TCP流
然后在流量中发现了FFD8FF,要对这段十六进制数敏感一点,这是jpg文件的文件头,然后再看看最后,果然是jpg文件的文件尾FFD9,于是将FFD8FF到FFD9复制,粘贴到一个十六进制编译器中,我这里用的是C32Asm(winhex应该也可以,但是不知道怎么的我没弄好),保存生成一个jpg图片:
将图片里的字符串作为密码输入之前加密的压缩包中,成功打开flag.txt文件,得到flag!
flag{3OpWdJ-JP6FzK-koCMAK-VkfWBq-75Un2z}
这是本人在CSDN中发布的第一篇文章,希望和大家一起进步。