CTF MISC解题思路总结篇

35 篇文章 2 订阅
30 篇文章 1 订阅

本文章适合入门,高手就不需要看了

本人自己总结,不足勿喷,感谢!!!希望可以帮到你!!

工具包在最下方链接中

               目录

文件操作

                ​​  判断文件类型     

文件头残缺/错误 

文件分离操作

文件合并操作

文件隐写

        图片隐写的常见隐写方法

        图片隐写常用工具

        音频隐写

压缩文件处理

        1.伪加密

        2.暴力破解

        3.RAR文件格式错误,导致解压不完全

流量取证技术

        工具Wireshark的使用

        无线流量

        usb键盘流量

键盘流量脚本

        usb鼠标流量分析

        鼠标流量分析脚本

        https流量包分析

感谢阅读!!!


文件操作

判断文件类型     

若不知道后缀名,无法打开文件

File 命令(linux) 

语法 :

file 文件名

8c428c0e91884266aaac07d5a6c5f087.png

识别为jpeg图片

winhex工具(windows)

一个十六进制编辑器

通过查看文件头判断文件类型(最好记得一些常见的,看到就要反应过来)

51ba26a4beb544289ad8bf6e2e669516.png

 文件头残缺/错误 

此时无法判断文件类型

需要使用winhex,010ediert,notepadd++对文件头进行修改或者添加

没修改前 使用flie 命令查看会显示data

0d8a93ca2c834ae88f81cb942c152456.png

文件分离操作

binwalk工具(Linux)

可以快速分辨文件是否有多个文件组成,并对其进行分离(发现压缩包会自动解压)

语法:

分析文件  binwalk  文件名

分离文件  binwalk  -e  文件名

6c5da876787246b4b2f4ffd9775389c2.png

Foremost

binwalk无法正常分离可以使用foremost将目标文件分解到我们设置的目录下

并按文件类型给分类。

语法

Foremost  文件名  -o 输出目录名

7db1d8bd33764f2a83cb08caa15260a2.png

dd(较少用)

当文件自动分离出错或者因为其他原因无法自动分离

语法

dd if=源文件 of=目标文件名 bs=1 count=读多少块 skip=开始分离的额字节数

参数说明

if=file  #输入文件名,缺省为标准输入

of=file  #输出文件名,缺省为标准输出

bs=bytes   #同时设置读写快大小为bytes,可替代ibs和obs。

skip=blocks  #从输入文件开始跳过blocks个块后开始复制

例如

源文件为1234567890abcdefg

0b9bb58194414560b098f4c47c44f865.png

winhex

windows下可以利用winhex程序进行分离,找到要分离的部分手动复制分离即可

010Editor

比winhex方便,自动划分了文件头啥的,做伪加密很方便,同时可以右键直接保存成文件

8cb7a1b257404c87af2f80cb2068a6ac.png

文件合并操作

linux下文件合并

语法  cat  合并文件名  > 输出的文件

f22958433c2a4b0eb84cc14a6e1034bf.png

这类题一般会给出md5值来让你验证是否合成正确

完整性检测: Linux下计算文件的md5:
语法:md5sum 文件名

9864a267a1d7422088626f52099fac41.png

windows下文件合并

语法: copy /B 合并的文件(文件间用加号来连接) 输出的文件

5b04bc74626b4d4680fb26f1a75a89f0.png

完整性检测:

windows下计算文件md5

certutil -hashfile 文件名  md5

05318f76a49240d4a419f9d77e32b41f.png

文件隐写

直接将key写在文件中,再文件的开头或者结尾部分,若写在文件中间,需要通过搜索查找

windows下查找隐写内容

1 winhex/010Editor

2 Notepad++

图片隐写的常见隐写方法

查看图片不同通道:

(像素三原色RGB)工具:stegsolve

GIF图多帧隐藏工具:

stegsolve、Photoshop、firework,部分在线网站有时候也蛮好用的(这里就不给出来了)

(1)颜色通道隐藏

(2)不同帧图信息隐藏

(3)不同帧对比隐藏

Exif信息隐藏工具:

windows上右击打开图片属性

图片修复 工具 winhex

(1)图片头修复

(2)图片尾修复

(3)CRC校验修复

(4)长、宽、高度修复

最低有效位LSB隐写 工具:stegsolve、zsteg、wbstego4

LSB(最低有效位)

LSB替换隐写基本思想是用嵌入的秘密信息取代载体图像的最低比特位原来的七个高位平面与代替秘密星系的最低平面合成隐藏信息的新图形。Stegsove是最常用的工具,有时zsteg更方便

图片隐写常用工具(具体用法)

Our Secret

一款用于文件加密的软件

Firework

查看隐写的图片文件,多帧gif啥的都可以使用此工具查看

Stegsove

 两张图片大小外观像素等基本相同时可以考虑对两个文件进行像素RGB值 XOB ADD SUB等操作,查看是否有有用的信息

42b022a2304142978de82b690108da25.png

数据提取功能

78c84db8a85a43698d879cbb82a27fc2.png

d3c3accead9d410383a37b262339026a.png

zsteg工具(Linux)

需要下载

语法:

gem install zsteg

再使用

语法:

zsteg  文件名

例如:会将最低有效位的数据显示出来

2d5d90046c9c49b08e8182aed5678d11.png

wbsteg04工具

解密lsp加密的文件,注意他所要求的文件类型,得到解密之后的文件

python脚本处理

此时脚本文件要与目标文件放在同一目录下  运行python即可,这个对编程有一定要求

TweakPNG工具

使用场景:文件头正常但无法打开文件,可用此工具修改CRC校验值

一款简易用的PNG图像浏览工具,允许查看和修改一些PNG图像文件的元信息储存。

例如:

4db9b7c27e674e929b9c3c32817ba17b.png

也有可能是高度和宽度错误,发现改了crc也打不开,此时需要利用crc去计算长和宽并利用16进制编辑器去修改

d5f451a4290a476ea42a0c0112371120.png

Bftools (windows)

用于解密图片信息

语法:Bftools.exe decode braincopter 需要解密的文件名称 -output 输出文件名

Bftools.exe run 上一步的输出文件名

fc823d6ea658417d9c0a163378315a68.png

SilentEye(Windows)

一款将文字或者文件隐藏到图片中的解密工具

8f15f4d08b4e4a1181fb1edce0da5b81.png

4529e671cd7e475aa452ee61990e24ac.png

stegdetect工具探测加密方式(jpg文件)

4ef63cc1ec3e4209abd1dd13605dfb02.png

语法:    

   stegdetect xxx.jpg

   stegdete -s 敏感度(检测更准确) xxx.jpg

8773eededebc40a98a4bd4e439c000a0.png

jphide

  基于最低有效位LSP的JPEG格式图像隐写算法

0f14c60fd84f49aeb53ffcc6aea02ecd.png

Outguess

        使用场景:Stegdetect识别出来或题目说是outguess加密的图片

   语法:

outguess -r 要解密的文件名   输出的文件名

该工具需要编译后使用 

./configure&&make&&make install

fa849126961648d394be986dd3be668e.png

F5

 使用场景:Stegdetect识别出来或题目说是F5加密的图片

  语法:

 java Exrtact 要解密的文件  -p 密码

d34aa1f6cddb4411bf1f76763e9634de.png

CQR.exe

使用场景:对二维码处理

2ea5dc4537994465a4f08cfa24b65ac9.png

若某一部分被覆盖,该工具有时候可以自动识别,如果识别失败需要用ps

或者画图等工具补全(其实可以用手机微信)

若二维码颜色反了,中间为白或者颜色不对则需要画图工具取反色(不能是画笔状态,要选择状态),再扫描

8191b556cafe4a7dbdc2bc7a49579d39.png

音频隐写

一般使用Audacity处理

b7a7a73557e54110a958f6e85fd1661e.png

有些隐写藏在波形图中   例如攻防世界攻防世界 很普通的Disco_Dadeln。的博客-CSDN博客

有些隐写藏在频谱图中   例如攻防世界的intoU攻防世界 intoU 详细思路_Dadeln。的博客-CSDN博客

d88589636bfa49e4acb54ce003fda573.png

还可能需要调整采样率信息才会显示完全

压缩文件处理

1.伪加密

使用场景:文件为伪加密文件

操作方法:使用十六进制编辑器打开文件

zip无加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为00 00

假加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为09 00
真加密
压缩源文件数据区的全局加密应当为09 00
且压缩源文件目录区的全局方式位标记应当为09 00

zip  将从504B0102 后面的九,十位为00 00

rar   将24位改为00

2.暴力破解

   通常用ARCHPR.exe来破解zip

使用场景:windows下破解加密过的

zip文件

(1)攻击类型 选择暴力破解,暴力破解文件 

一般适合于压缩包解密没给任何提示,在这之前要先判断是不是伪加密,这种方法如果密码数位较多消耗时间较长,除非没有其他办法,不建议长时间去暴力破解一个题

(2)攻击类型 选择掩码 可以进行更复杂的暴力破解

比如知道前三位是abc,后三位位数字,则选择攻击类型为掩码,在掩码处输入abs???,破解范围为数字开始破解,???将会被数字代替进行破解   例如攻防世界的再见李华

(3)攻击类型 明文攻击

明文攻击指知道加密的zip文件的部分明文内容,利用这些内容推测处密钥并解密zip报文的攻击方法。

相比于暴力破解这种方法在破解复杂密码是效率更高。

3716ea4e9f7e4d4591bf504523098a79.png

有时破解不了口令,但能找到加密秘钥,可以直接将文件解密,点击保存解密后的文件

c592cacc77b347828cb2477826486269.png

使用明文攻击时注意

1.明文文件压缩后CRC值与加密压缩包中的文件一致

2.明文文件要锁算法要与加密压缩文件的压缩算法一致

9af889b4930c467e9c753b329ff69c3b.png

3.RAR文件格式错误,导致解压不完全

有时候给出的RAR文件的各个头部会故意给错无法识别出文件

c3d02e99d17a4b0abfc26642cdfa4d55.png

流量取证技术

通常比赛会提供PCAP文件

总体把握:

  • 协议分级
  • 站点统计

过滤筛选:

  • 过滤语法
  • Host,Protocol,contains,特征值

发现异常:

  • 特殊字符串
  • 协议某字段
  • flag位于服务器中

数据提取:

  • 字符串取
  • 文件提取

总的来说比赛中的流量分析可以概括为以下三个方向:

  • 流量包修复
  • 协议分析
  • 数据提取

工具Wireshark的使用

7858fbea8f1e4adfb5e137fa5fcc882f.png

过滤器

常用的过滤命令:

1,过滤ip,如源ip或者目标x.x.x.x  ip.src eq(==) x.x.x.x or ip.dst eq(==) x.x.x.x 或者 ip.addr eq(==) x.x.x.x

2.过滤端口  

  tcp.port ==80

 tcp.dstport==80只显示tcp协议目标端口为80的流量包

tcp.srcport==80只显示tcp协议源端口为80的流量包

tcp.port>=1 and tcp.port<=80

3.过滤协议

tcp/udp/arp/icmp/http/ftp/ip等

4.过滤Mac

eth.dst == mac地址

5.包长度过滤

udp.length==26    这个长度是指udp本身长度8加数据包长度之和

tcp.len >=7 指ip数据包,不包括tcp本身

ip,len  除固定长度14

frame.len==119 从eth到最后

6.http模式过滤

http.request.method =="get"  筛选http get请求

http.request.method =="post"筛选http post请求

http.request.url =="/img/logo-edu.gif"筛选访问链接的请求

http  contains "get"

http  contains "http/1"

http  contains "flag"  包内包含flag

tcp  contains "flag"

7.协议分级   看数据包主要传什么

b592f73466d14d1ab2d2458bc4a0bdf5.png

8.流汇聚  将http或tcp流汇聚查看其内容(部分题目flag就藏在里面)

6df060d82e5940199de6f10a738542d4.png

9.数据提取   导出传输文件内容

文件->导出对象——>http

403a29e0f35e4c92a80cc6e4720b054d.png

无线流量

aircrack-ng 检查cap包 

语法:

aircrack-ng xxx.cap

38900cbb32b74f2082ec0f0740625009.png

使用 aircrack-ng xxx.cap 字典名  爆破WiFi钥匙

usb键盘流量

原来数据部分在数据包中需要设置为列

42fdc6339a7949dbb71edc3153958539.png

leftover capture data中值与具体键位的对应关系

可以参考

61d0f995f64f481abd3e9e9377d9efa7.png

afa31f35c8014a54a3452a99314bc16c.png

csv也为一种表格形式,将数据保存为表格

bbb165c38ae241baa5f3b8637b791a88.png

5c88a586e3db484ca8548e2bdc57eb76.png

  用写好的Python脚本将数据含义输出

8be85880bbca484cbe4795e8d5426973.png

键盘流量脚本

import os
os.system("tshark -r test.pcapng -T fields -e usb.capdata > usbdata.txt")
normalKeys = {"04":"a", "05":"b", "06":"c", "07":"d", "08":"e", "09":"f", "0a":"g", "0b":"h", "0c":"i", "0d":"j", "0e":"k", "0f":"l", "10":"m", "11":"n", "12":"o", "13":"p", "14":"q", "15":"r", "16":"s", "17":"t", "18":"u", "19":"v", "1a":"w", "1b":"x", "1c":"y", "1d":"z","1e":"1", "1f":"2", "20":"3", "21":"4", "22":"5", "23":"6","24":"7","25":"8","26":"9","27":"0","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t","2c":"<SPACE>","2d":"-","2e":"=","2f":"[","30":"]","31":"\\","32":"<NON>","33":";","34":"'","35":"<GA>","36":",","37":".","38":"/","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}

shiftKeys = {"04":"A", "05":"B", "06":"C", "07":"D", "08":"E", "09":"F", "0a":"G", "0b":"H", "0c":"I", "0d":"J", "0e":"K", "0f":"L", "10":"M", "11":"N", "12":"O", "13":"P", "14":"Q", "15":"R", "16":"S", "17":"T", "18":"U", "19":"V", "1a":"W", "1b":"X", "1c":"Y", "1d":"Z","1e":"!", "1f":"@", "20":"#", "21":"$", "22":"%", "23":"^","24":"&","25":"*","26":"(","27":")","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t","2c":"<SPACE>","2d":"_","2e":"+","2f":"{","30":"}","31":"|","32":"<NON>","33":"\"","34":":","35":"<GA>","36":"<","37":">","38":"?","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}


nums = []
keys = open('1.txt')#你的文本文件
for line in keys:
    #print(line)
    if len(line)!=17: #首先过滤掉鼠标等其他设备的USB流量
         continue
    nums.append(line[0:2]+line[4:6]) #取一、三字节
    #print(nums)
keys.close()
output = ""
for n in nums:
    if n[2:4] == "00" :
        continue

    if n[2:4] in normalKeys:
        if n[0:2]=="02": #表示按下了shift
            output += shiftKeys [n[2:4]]
        else :
            output += normalKeys [n[2:4]]
    else:
        output += '[unknown]'
print('output :' + output)

usb鼠标流量分析

鼠标流量表现为连续性,与键盘离散性不同,同样需要吧数据抓出来,在二维坐标内显示轨迹

ce944491976e4526af84106f0fe7fd83.png

014855f556ff491a8fd5a972f8749046.png

3244a223634749ef9c1dfcef899aa5c7.png

导出数据方法与键盘流量的方法相同,导出后用python跑出坐标

鼠标流量分析脚本

nums = [] 
keys = open('data.txt','r') //此处更改数据导出的文件名
posx = 0 
posy = 0 
for line in keys: 
if len(line) != 12 : 
     continue 
x = int(line[3:5],16) 
y = int(line[6:8],16) 
if x > 127 : 
    x -= 256 
if y > 127 : 
    y -= 256 
posx += x 
posy += y 
btn_flag = int(line[0:2],16)  # 1 for left , 2 for right , 0 for nothing 
if btn_flag == 1 : 
    print posx , posy 
keys.close()

464373a51b8a4a968fb4fef581efebe7.png

接着用gnuplot工具把图画出来

语法(linux下):

gnuplot 进入工具

plot  “上一步导出的坐标文件”

https流量包分析

https=http+TLS

http:80  https:443

https流量经过TLS协议加密,需要导入key(题目会提示)才能看到原始的http流量

5713b5d1102641cb8a5b9aaf078150fa.png

导入key后,出现http数据包,就可以进行追踪流等其他操作了

感谢阅读!!!

 ctf工具包   提取码:ctf6

百度网盘 请输入提取码

  • 29
    点赞
  • 174
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CTF中的Miscellaneous(简称Misc)是指一类涵盖了多个领域的题目,常见的包括密码学、网络协议、二进制分析等。 在CTF比赛中,解决这类题目的方法主要有以下几种: 1. 阅读题目描述:首先要仔细阅读题目描述,通常会提供一些线索或提示,例如题目类型、题目背景或所需的技术知识。这些大致的信息能够帮助你确定解题方法的方向。 2. 分析题目附件或源代码:如果题目提供了附件或源代码,要仔细分析其中的内容。有时可能需要进行逆向工程、二进制分析或查找隐藏信息。需要注意的是,不同题目类型可能需要使用不同的分析工具和技术。 3. 猜测和尝试:在整个解题过程中,可能需要多次猜测和尝试。例如,对于密码学类题目,尝试使用不同类型的密码学算法进行解密;对于网络协议类题目,尝试使用Wireshark等工具进行数据包分析。 4. 查找前人的经验:CTF解题是一个积累经验的过程,很多题目类型都有经典解法,可以通过学习前人的经验来提高解题效率。可以参考CTF比赛的writeup、CTF讨论论坛或CTF相关的学习资源等。 5. 团队合作:在解题过程中,可以与队友或其他选手进行合作,分享解题过程中的思路和发现。这样可以锻炼团队合作的能力,也能够快速找到解题思路解题方法。 综上所述,CTFMisc题目的解题方法主要包括阅读题目描述、分析附件或源代码、猜测和尝试、查找前人的经验以及团队合作等。通过不断学习和实践,提高解题的技巧和经验,才能更好地应对各种Misc题目的挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值