文章目录

  • 1、gif文件修复
  • 2、灌篮高手
  • 3、base
  • 4、challenge(bpg文件)
  • 5、decode(解码)
  • 6、明文攻击
  • 7、乌云邀请码
  • 8、一枝独秀
  • 9、fllllllag.gif(gif图分离,合成)
  • 10、file.zip(零宽隐写)
  • 11、QR_code.png(Linux下使用fcrackzip爆破密码)
  • 12、这不是真正的安全.zip(伪加密)
  • 13、example.zip(伪加密+明文爆破+CRC32爆破)
  • 14、soul sipse(音频隐写,steghide工具分离)
  • 15、冰冰(java盲水印)

1、gif文件修复

题目为一张名为xx.gif的图片,无法正常打开,我们使用WinHex来进行解析,发现图片头文件有问题。正常gif图片的头文件为47494638,而这张图片头只有38

此使我们右键复制474946 光标处于第一个字符处,点击编辑-剪贴板数据-粘贴,弹出对话框点击确定


选择ASCII_Hex 点击确定

修改头文件后,保存,gif图片就能正常打开了



GIF图是动态图,可以用微信拍个小视频,一步一步暂停观看。最终可到图片显示内容为
key is: dGhpcyBpcyBhIGdpZg== 可以明显看出是base64加密后的字符,对其进行解密后得出flag为
key is: this is a gif

2、灌篮高手


用StegSolve将图片打开,点击Analyse-Data Extract

勾选红绿蓝的0位,点击Preview,再点击Save Bin,命名111,保存


使用WinHex打开这个111文件,发现文件头为504B0304 这是.zip的头文件,可以将其后缀改为.zip

解压发现111.zip文件损坏,用WinRAR打开,点击工具-修复压缩文件,可以在当前路径下看到一个rebuilt.111.zip的压缩包,解压后发现一个名为 1 的文件

在kali里面用file命令查看一下1文件,可以看到这个1是linux下的可执行文件
┌──(kali㉿kali)-[~]
└─$ file 1
1: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=8df45089fa39fec83423ec37a944e81065d16bee, not stripped

执行以下这个1 得到flag

3、base


题目提供了一张base.jpg的图片,在kali下使用binwalk看以下,发现图片中包括一个RAR文件,使用foremost将其分离出来

在kali当前路径下出现一个output文件夹,分离得到一个压缩包,进行各种爆破还是爆破不出密码。使用strings命令,在最后看到一个提示,shiyanbar


由于本题目名叫base,所以shiyanbar进行base64编码,得出的字符串就是压缩包密码,解密后得到flag为CTF{simpleware}

4、challenge(bpg文件)


使用010Editor打开,发现图片中附加有BPG文件,以42 50 47 FB开头

将其选中以后,右键“选择”-“保存选择”,另存为一个.bpg后缀的文件

.bpg文件正常无法打开,必须使用专用工具查看工具下载

打开.bpg文件后,发现一个base64码,解码后得到flag bsides_delhi{BPG_i5_b3tt3r_7h4n_JPG}

5、decode(解码)

题目提供了一串字符,从开头的0x可以看出是16进制数

0x253464253534253435253335253433253661253435253737253464253531253666253738253464
25343425363725346225346625353425366225346225346425353425343525373825343325366125
34352537372534662535312536662537382534642534342534352534622534642535342534352533
32253433253661253435253738253464253531253666253738253464253534253535253462253464
25353425343125333025343325366125343525373725346525353125366625373825346425366125
34352534622534662535342536332534622534642535342534352537372534332536612536622533
34253433253661253662253333253433253661253435253738253465253431253364253364

使用Converter工具,将这一串字符转为文本,可以看出转换后的是url编码

使用在线URL解码工具将其解码后,可以看出解密后的是base64编码的字符串

base64解码后得出一串数字,可以看出是ASCII码

使用Converter工具,将ASCII码转换为字符,得出flag为welcometoshiyanbar

6、明文攻击


题目为一个压缩包和一个txt。我们打开压缩包的tips.txt,里面提示:密码是十位大小写字母、数字、特殊符号组成的,你爆破的开么?!这个提示告诉我们爆破是基本不可能了。然后我们发现falg.zip里面也有个tips.txt

然后我猜想flag.zip里面的tips.txt和另外一个tips.txt是不是同一个文件。然后把tips.txt压缩后可以发现,他们两个的crc32是一样的

所以我们用工具ARCHPR对flag.zip进行明文攻击,把tips.txt进行压缩作为明文文件路径

密码跑出来以后,一定要使用旁边的复制,千万别手敲,密码后面有空格

解压后得到flag为flag{Mtf1y@ }

7、乌云邀请码


题目为一个图片,里面有一堆链接,其实链接都是假的
放入Stegsolve查看,选择Analyse 的Data Extract进行分析,勾选红绿蓝的0层,选择BGR模式,然后点击Preview,滚动条滑到最上,发现flag

8、一枝独秀

题目为一个压缩包,名为一枝独秀,双击发现有一堆名为floewr的图片,其中有一张81号图片的CRC32校验值和其他都不一样

使用工具爆破出密码为12345678 打开81号图片属性,发现属性为flowers

使用JPHS工具打开81号图,点击Seek,输入密码flowers,点击OK,将图片另存为a


使用WinHex打开这个a文件,发现头文件是504B0304,说明这是一个zip文件,将后缀改为.zip解压


发现里面又有一个参悟佛法的文件

使用这个网站https://www.keyfc.net/bbs/tools/tudoucode.aspx
将佛曰粘进去,点击参悟佛所言的真意,得到一串字符

想起来栅栏加密,以及前面提示“翻越4个栅栏即可得flag” 于是输入字符进行栅栏解密,得到另一串字符

再进行base64解码,最终得到flag

9、fllllllag.gif(gif图分离,合成)

题目为一个极其窄的gif文件,无法看清内容

在kali中将gif图片与如下脚本放在同一目录下,执行脚本,生成output文件夹,将gif图片分离为png图片

#gif_to_png
import os
from PIL import Image,ImageSequence
gif = Image.open(r'fllllllag.gif')
if os.path.exists("output") == False: os.mkdir("output")for i,frame in enumerate(ImageSequence.Iterator(gif),1):frame.save(r'output/test%d.png'%i)

再执行如下脚本,将大量的png文件拼接为一个文件

from PIL import Image
import os
import math
import random# 所有需处理图片及生成图片的根目录
dir = 'output'
# 统一图片的高度
HEIGHT_PER_PIC = 500
# 统一图片的宽度
WIDTH_PER_PIC = 2
# 获取指定路径下的所有图片
def getImagesName(dir):allPicPath = []  # 所有图片for i in range(1,203):allPicPath.append(dir + ('/test%d.png' % i))return allPicPath# 将图片转化为指定大小
def transferSize(allPicPath):for i in range(len(allPicPath)):# 打开图片im = Image.open(allPicPath[i])# 重新设置图片的大小out = im.resize((HEIGHT_PER_PIC, WIDTH_PER_PIC), Image.ANTIALIAS)# 将图片保存到固定的位置out.save(dir +  '/' + str(i) + '.jpeg')def main(dir):allPicPath = getImagesName(dir)print (allPicPath)allTransPicPath = allPicPath#print (allTransPicPath)# 打印路径,检查是否正确# print(allTransPicPath)# 得到用于拼图的图片的数量numOfPic = len(allTransPicPath)# 因为设计拼接后的图形为正方形,因而对图片数量开算数平方根后向下取整,得到拼接后的正方形每行需要的小图片的数量perPicNum = numOfPicprint (perPicNum)# 生成一个固定的大小的image,类似于画布的感觉,用于将所有的图片贴上去,再生成新的图片toImage = Image.new('RGBA', (HEIGHT_PER_PIC, perPicNum * WIDTH_PER_PIC))for i in range(numOfPic):# 获取用于拼接的图片的imagefromImage = Image.open(allTransPicPath[i])# 计算每个图片的位置,保证顺利拼接loc = (i * WIDTH_PER_PIC, 0)# 打印每个图片所在的位置,可以看出分布print(loc)toImage.paste(fromImage, loc)toImage.save("flag.png")
if __name__ == '__main__':main(dir)

最终得到flag

10、file.zip(零宽隐写)

在文件属性-注释中可以看到一串很明显的摩尔斯电码,解密后是解压密码

解密后发现一串字符,很像HEX码,但是他是MD5码

MD5解密后是明文是qwe!123 这就是解压密码

解压后有一个file文件,用010 Editor打开看,发现头文件是89504147

改成png的头文件89 50 4E 47后保存,再将文件后缀改为.png后打开

打开是一个二维码,使用微信或相机扫码后,发现一局英文

新建一个.txt文件,将英文复制进来,光标放在最后时,发现显示是第310列,但是文本中并没有几个单词,说明文本中存在不可见字符(零宽隐写)

打开零宽隐写在线工具工具链接,复制字符串,解码,即可得到flag

11、QR_code.png(Linux下使用fcrackzip爆破密码)

使用foremost分离QR_code.png文件,提示密码是4位数字

使用fcrackzip命令爆破压缩包密码,为7639,解压后得到flag为 CTF{vjpw_wnoei}

fcrackzip -b -u -c 1 -p 0000 00000000.zip     //-b爆破;-u显示结果;-c 密码类型,1表示是数字类型;-p 密码起始位置

12、这不是真正的安全.zip(伪加密)

将压缩包拖入010Editor,发现两个50 4B头文件,第一个的加密标志位是08 00说明是真加密;第二个加密标志位是01 00 说明是伪加密,将其改为00 00后保存。

即可直接解压,得到flag为flag{38822552-1744-4671-948d-ecf6e8c0e27d}

13、example.zip(伪加密+明文爆破+CRC32爆破)

将压缩包拖入010Editor,ctrl+F搜索50 4B头文件,把加密标志位的09 00全部改为00 00后保存

双击压缩包,发现只有“示例-副本.txt”可以打开,且CRC32值一样

将 示例-副本.txt 文件拖出来,使用WinRAR将其压缩为.zip文件(文件格式要和待爆破的压缩包一致)CRC32值也要一致

使用爆破工具打开未经改动的题目example.zip文件,攻击方式选择明文,明文路径选择示例-副本.zip,开始爆破

最终爆破出口令为qwe@123

解压example.zip后又得到password.zip文件,里面有3个6字节大小的文件(CRC32爆破只能是6字节大小),其CRC32的值分别为0x21137233,0x4B8F7BE7,0x1028C889

使用CRC32爆破工具crc32hack,分别对password.zip中的1.txt 2.txt 3.txt文件的CRC32值进行解析,根据解析结果猜测最像是密码的字符进行组合



最终得到最像是密码的是welc0me_sangforctf 解压password.zip后得到.password.swp文件,是Linux下的隐藏文件

我们将其拖入到Kali的桌面,拖过去后你会发现桌面啥也没有,因为是隐藏文件,所以在终端中输入ls -al命令,即可显示隐藏文件。再使用vim -r .password.swp命令查看

最终得到账号密码

14、soul sipse(音频隐写,steghide工具分离)

将文件解压后是一个out.wav文件

Kali下使用steghide工具查看;在out.wav的存放目录下,执行如下命令提取隐藏文件,提示输入密码,直接回车忽略,执行后提示分离出download.txt

steghide extract -sf out.wav


在路径下找到了download.txt,打开里面是一个url

打开url是一个.png图片分享,下载下来,发现不能正常打开

使用010 Editor打开,发现头文件不对,改成89 50 4E 47后保存

正常打开后是一串unicode编码

在线解码后得到flag

15、冰冰(java盲水印)

题目及工具脚本下载 链接:https://pan.baidu.com/s/1mbOv79w4BryvumJEWf-Hzg 提取码:lvni
涉及关键工具 BlindWatermark.jar,键盘流量分析脚本

题目是一个受损的压缩吧,使用010打开,将17H处的84修改为80,保存后即可解压,解压后还有一个压缩包和冰冰的照片


java盲水印,得到一张图片,内容是gnibgnib 这是压缩包的密码,解压后得到一个bingbing.pcapng流量文件

java -jar BlindWatermark.jar decode -c bingbing.jpg 1.jpg


分析出是键盘流量文件

kali下使用tshark提取USB流量

tshark -r bingbing.pcapng -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt


再加冒号

f=open('usbdata.txt','r')
fi=open('out.txt','w')
while 1:a=f.readline().strip()if a:if len(a)==16: # 键盘流量的话len改为16out=''for i in range(0,len(a),2):if i+2 != len(a):out+=a[i]+a[i+1]+":"else:out+=a[i]+a[i+1]fi.write(out)fi.write('\n')else:breakfi.close()


加键盘通用脚本

mappings = { 0x04:"A",  0x05:"B",  0x06:"C", 0x07:"D", 0x08:"E", 0x09:"F", 0x0A:"G",  0x0B:"H", 0x0C:"I",  0x0D:"J", 0x0E:"K", 0x0F:"L", 0x10:"M", 0x11:"N",0x12:"O",  0x13:"P", 0x14:"Q", 0x15:"R", 0x16:"S", 0x17:"T", 0x18:"U",0x19:"V", 0x1A:"W", 0x1B:"X", 0x1C:"Y", 0x1D:"Z", 0x1E:"1", 0x1F:"2", 0x20:"3", 0x21:"4", 0x22:"5",  0x23:"6", 0x24:"7", 0x25:"8", 0x26:"9", 0x27:"0", 0x28:"\n", 0x2a:"[DEL]",  0X2B:"    ", 0x2C:" ",  0x2D:"-", 0x2E:"=", 0x2F:"[",  0x30:"]",  0x31:"\\", 0x32:"~", 0x33:";",  0x34:"'", 0x36:",",  0x37:"." }nums = []
keys = open('out.txt')
for line in keys:if line[0]!='0' or line[1]!='0' or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0':continuenums.append(int(line[6:8],16))keys.close()output = ""
for n in nums:if n == 0 :continueif n in mappings:output += mappings[n]else:output += '[unknown]'print 'output :\n' + output

运行脚本可得

删除中间的[DEL]键,用脚本将其转换为字符

m="666C61677B38663965643266393333656631346138643035323364303334396531323939637D"
s=bytes.fromhex(m)
print(s)


得到flag

b'flag{8f9ed2f933ef14a8d0523d0349e1299c}'

CTF题目Misc解题历程(持续更新)相关推荐

  1. 封神台靶场尤里的复仇I第一第二第五第六第七章解题思路(持续更新)

    文章目录 一 .第一章 二.第二章 三.第五章 四.第六章 五.第七章 总结 提示: 本文按照靶场题目推进顺序进行,由于作者水平有限,有讲述不当之处敬请批评指出,有更好的解法欢迎在评论区发表. 本文将 ...

  2. Leetcode题目练习总结(持续更新......)

    Leetcode题目练习 数组 1.两数之和 26. 删除排序数组中的重复项 27. 移除元素 35.搜索插入位置 53.最大子序列 66.加一 88.合并两个有序数组 118.杨辉三角 119.杨辉 ...

  3. leetcode题解(含解题思路)(持续更新中)

    数组 & 字符串 & 双指针 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标 ...

  4. atcoder题目合集(持续更新中)

    Choosing Points 数学 Integers on a Tree 构造 Leftmost Ball 计数dp+组合数学 Painting Graphs with AtCoDeer tarja ...

  5. [Hadoop] Hadoop学习历程 [持续更新中…]

    1. Hadoop FS Shell Hadoop之所以可以实现分布式计算,主要的原因之一是因为其背后的分布式文件系统(HDFS).所以,对于Hadoop的文件操作需要有一套全新的shell指令来完成 ...

  6. PIXI学习历程 -- 持续更新

    开头先贴上PIXI官方文档入门到制作小游戏过程链接:https://github.com/Zainking/learningPixi : 以下是个人自我摸索的过程,有好的建议和错误欢迎指出~~ 目前使 ...

  7. CTF学习-逆向解题思路

    CTF学习-逆向解题思路 持续更新 一.通用过程 通过file命令查看文件类型,判断是ELF还是PE,32位还是64位. 通过strings并重定向标准输出,然后搜索大括号 { ,看看是否能直接得到f ...

  8. 逆向迷宫题总结(持续更新) 2020华南师大CTF新生赛maze,攻防世界新手区:NJUPT CTF 2017,BUUCTF:不一样的flag

    CTF逆向入门:迷宫题学习记录(持续更新) ** 目录 **CTF逆向入门:迷宫题学习记录(持续更新)** (前言) 一. 逆向迷宫题概述 二. 具体题目分析 1. 2019华南师大CTF新生赛maz ...

  9. CTF之MISC题目-西游记

    CTF系列文章 第一篇 CTF之密码学题目-classical && coding 第二篇 CTF之MISC题目-西游记 第三篇 CTF之MISC题目-简单流量 文章目录 CTF系列文 ...

最新文章

  1. Element 2.6.0 发布,基于 Vue 2.0 的桌面端组件库
  2. 数据库期末复习之并发控制
  3. java接口测试入门
  4. 一些基于VUE的后台框架对比
  5. sql server 2008学习9 视图
  6. 关于导入项目eclipse出现乱码的问题
  7. 洞察SaaS:中国SaaS的前世今生
  8. 强化学习常用算法+实际应用
  9. HTML常用标签及属性
  10. idea maven repositories为空
  11. 计算机数据处理规模大小分为,计算机组成原理题集样稿.doc
  12. android mp3文件图片,android 完美获取音乐文件中的专辑图片并显示
  13. GD32F103实战
  14. 缠论中枢python源码_缠论画中枢主图指标 源码 通达信 贴图
  15. 条形码技术应用属于计算机系统的,条形码技术在现代物流系统中的应用
  16. Android动态权限获取 相机权限、存储空间等多权限(极简)
  17. DAC0832数模转换芯片介绍及使用教程
  18. 号外:PPG商标被查封 轻工厂泡沫破灭
  19. 【Docker】Linux各系统安装Docker,Docker-compose方式汇总
  20. 服务器证书验证失败怎么办

热门文章

  1. 十六进制转十进制-C语言
  2. Python基础关键词英语 不会英文也没关系!!!
  3. windows10安装达梦数据库
  4. L1-049 天梯赛座位分配 (20分)(C语言)
  5. 工商注册身份验证 v1.0.1
  6. 消防装备管理系统(5)详细设计
  7. GimbalLock万向节锁与四元数旋转
  8. 求cosx*sinx的导数
  9. CF 1083 A. The Fair Nut and the Best Path
  10. 2786 我跳我跳我跳跳跳【Bfs】