CTF入门宝典|CTF五大题型之杂项那些事儿
远程开启kali桌面命令:
sudo/etc/init.d/xrdp start
CTF:① Misc:杂项 ②Crypto:密码安全 ③Web安全 ④Reverse:逆向工程 ⑤Pwn
#杂项
1、文件操作与隐写
2、图片隐写术
3、压缩文件处理
4、流量取证技术
文件操作与隐写
▲▲▲
#命令就是一个对应的工具,只是这个工具没有对应的图形化界面而已
( 1)、 File:解析文件头
( 2)、winhex:十六进制文件编辑器
( 3)、 010edit notepad++ (看头地址的前四个的值判断文件类型)
#文件头缺失:
使用场景 文件头部残缺或文件头部字段错误无法打开正常文件( file文件名 == Data)
使用 010edit,修复文件头
#文件分离操作:图片种子 把很多文件融合成一张图片
分析文件:binwalk 文件名
分离文件:binwalk -e 文件名 遇到压缩包会进行自动解压
foremost 文件名 -o 输出目录名
使用dd实现文件的手动分离
格式:dd if=源文件 of=目标文件名 bs= 1count=xx skip=开始分离的字节数
参数说明:
if=file #输入文件名,缺省为标准输入
of=file #输出文件名,缺省为标准输出
bs=bytes #同时设置读写块的大小为bytes,可以代替ibs和obs
skip=blocks #从输入文件开头跳过blocks个块后再开始复制
count #总共要读取count个块
010edit:选中,右键, select,save selection
将 16进制字符文件导入保存操作方法: 010edit:File 中的Import Hexagon另存为....
#文件合并:
给一个MD5值计算文件的完整性
1、Linux下的文件合并
cat 文件 1文件 2文件 3> 文件.xxx
校验文件的md5值:(命令)md5sum 文件名
2、Windows下的文件合并
copy/B 文件 1+文件 2+文件 3文件.xxx
certutil -hashfile 文件 md5
#文件内容隐写:
查找功能
图片隐写术
▲▲▲
#题型:
细微的颜色差别
GIF图多帧隐藏
1、颜色通道隐藏
2、不同帧图信息隐藏
3、不同帧对比隐写
Exif信息隐藏
图片修复
1、图片头修复
2、图片尾修复
3、CRC校验修复
4、长宽高修复
图片加密
1、Stegdetect
2、outguess
3、Jphide
4、F5
#常用工具:
1、Firework:查看隐写的图片文件
2、Exif:打开属性(给提示)Windows
exitfool 文件名 Linux
3、Stegsolve(隐写题):两张图片的信息基本相同
修改 打开方式:bin/javaw.exe 修改注册表:HKEY_CLASSES_ROOTApplicationsjavaw.exeshell opencommand 在中间添加 -jar (需要空格)
用来筛选最低有效位 Analyse -->Data Extract-->三基色:RGB
4、zsteg需要在线安装(隐写) root@kali:/# gem install zsteg
detect stegano-hidden data inPNG & BMP
检测LSB隐写 zsteg xxx.png/bmp
5、wbstego4工具(最低有效位):针对.bmp/.pdf
得到的_is文件用notepad++打开
6、画图:图片格式转换
7、python脚本来处理(图片隐写LSB)
8、TweakPNG:文件头正常却无法打开文件,利用TweakPNG修改CRC
1、CRC校验错误
2、高度错误导致CRC错误,需要修改高度. 计算脚本
CR C上一行之后的 8个字节,前四个为宽度,后四个为高度(十六进制下的第二行前八 位)
如果修改完CRC还没有获得flag,则为高度或者宽度问题,因为高度和宽度的改变引起了
计算出来的CRC不正确,则在运行脚本时候的CRC为原本正确的CRC值
9、Bftools:用于解密图片信息
使用场景:在windows的cmd下,对加密过的图片文件进行解密
格式:
Bftools.exe decode braincopter 要解密的图片名称 - output输出文件名
Bftools.exe run 上一步输出的文件
10、SlientEye
使用场景:windows下打开silentEye工具,对加密的图片进行解密
方法:使用silentEye程序打开目标图片,点击image->decode,点击decode,可以查看隐藏文件,点击保存即可
如果需要密码,勾选encrypted data,输入密码和确认密码,再点击decode
11、Stegdetect工具探测加密方式:针对jpg
命令:
stegdetect xxx.jpg
stegdetect -s 敏感度 xxx.jpg
1)、Jphide
2)、Outguess
使用场景:Stegdetect识别出来或者题目提示是outguess加密的图片
该工具需编译使用:./configure && make && make install
格式:outguess -r 要解密的文件 输出结果的文件名
3)、F5
使用场景:Stegdetect识别出来是F5加密的图片或题目提示是F5加密的图片
进入F5-steganography_F5目录,将图片文件拷贝至该目录下,从CMD进入该目录
格式:Java Exrtact 要解密的文件名 -p 密码
运行结果在目录下的 output.txt看到
#二维码处理:
CQR.exe打开图片,找到内容字段
2、补全二维码
3、取反
压缩文件处理
▲▲▲
#伪加密
使用场景:伪加密文件
zip方法:使用winhex打开压缩文件,找到文件头第九第十个字符,将其修改为0000
使用 winhex打开文件搜索16进制504B0102,可以看到每个加密文件的头文件字段
rar方法:使用winhex打开rar文件,找到第24个字节,该字节尾数为4表示加密,0表示无加密
#暴力破解
ARCHPR:windows下加密过的rar文件
ziperello:windows下加密过的zip文件
#明文攻击
使用场景:已知加密的 zip? rar部分文件明文内容
方法:
1、将 .txt的明文文件进行压缩,变成 .zip
2、打开 archpr ,攻击类型选择明文,明文文件路径选择 .zip(即将明文文件不加密压 缩后的文件),
加密的文件
3、选择要破解的文件,点击开始,破解成功后会获得密码
有时候会跑出加密秘钥
使用该方法需要注意两个关键点:
1、有一个明文文件,压缩后 CRC值与加密压缩包中的文件一致
2、明文文件的压缩算法需要与加密压缩文件的压缩算法一样( store是默认算法)
#RAR文件格式
有时候给出的RAR文件的头部各个字块会故意给错导致无法识别
HEAD_CRC 2字节 所有块或块部分的CRC
HEAD_TYPE 1字节 块类型
HEAD_FLAGS 2字节 块标记
HE AD_SIZE 2字节 块大小 #如果快标记的第一位被置1的话,还存在:
ADD_SIZE 4字节 可选结构-增加块大小
那么,文件块的第三个字节为块类型,也叫头类型
头类型是0x72表示是标记块
头类型是0x73表示是压缩文件头块
头类型是0x74表示是文件头块
头类型是0x75表示是注释快
……
怎么看开始,看前面的到哪里结束
流量取证技术
▲▲▲
通常比赛中会 提供一个包含流量数据的PCAP文件,有时候需要进行修复或重构传输文件后,再进行 分析
总体把握:
协议分级
端点统计
过滤筛选
过滤语法
Host,Protocol,contains,特征值
发现异常
特殊字符串
协议某字段
flag位于服务器中
数据提取
字符串取
文件提取
流量分析可以概括为三个方向
1、流量包修复
2、协议分析
3、数据提取
#常用的过滤命令:
1、过滤IP,如源IP或者目标x.x.x.x
ip.src eq x.x.x.x orip.dst eq x.x.x.x
2、过滤端口
tcp.port eq 80orudp.port eq 80
tcp.dstport == 80只显tcp协议的目标端口为 80
tcp.srcport == 80只显tcp协议的源端口为 80
tcp.port >= 1andtcp.port <= 80
3、过滤协议
tcp/udp/arp/icmp/http/ftp/dns/ip……
4、过滤MAC
eth.dst == xx.xx.xx.xx 过滤目标MAC
5、包长度过滤
udp.length == xx 这个长度是指udp本身固定长度 8加上udp下面那块数据包之和
tcp. len>= 7指的是ip数据包(tcp下面那块数据),不包括tcp本身
ip. len== 94除了以太网头固定长度 14,其他都算是ip. len,即从ip本身到最后
frame. len== 119整个数据包长度,从eth开始到最后
6、http模式过滤
http. request.method == "GET"
http. request.method == "POST"
http. request.uri == "/img/logo-edu.gif"
http contains "GET"
http contains "HTTP/1."
http. request.method == "GET"&& http
http contains "flag"
http contains "key"
tcp contains "flag"
#WireShark协议分析:
英文版:Statistics -> Protocol Hierarchy
中文版:统计 -> 协议分级
根据数据包特征进行筛选
右键-->作为过滤器应用-->选中
流汇聚
右键-->追踪流-->....
在关 注的http数据包或tcp数据包中选择流汇聚,可以将http流或tcp流汇聚或还原成数据,在弹出的框中可以看到 数据内容
常见的http流关键内容:
1、html中直接包含重要信息
2、上传或下载文件内容,通常包含文件名,hash值等关键信息
常用POST请求上传
3、一句话木马,POST请求,内容包含 eval,内容使用base64加密
#数据提取:
使用wireshark自动提取通过http传输的文件内容
文件 -->导出对象(wireshark自带的文件分离功能)
手动提取文件内容
右键 --> 导出分组字节流 或者 点击菜单栏 文件-->导出分组字节流,快捷键ctrl+ h
在弹出的框中将文件保存成二进制文件
#无线wifi流量包:
kali系统下: aircrack-ng工具进行 wifi密码破解
1、用 aircrack-ng检查 cap包: aircrack-ngxxx.cap
bssid: MAC地址 ESSID: wifi名字
2、用 aircrack-ng跑字典进行握手包破解: aircrack-ngxxx.cap-wpass.txt
#USB流量:鼠标流量和键盘流量
键盘流量:
右键leftover capture data --> 应用为列..
在数据包中体现,apply ascolumn
键盘数据包的数据长度为 8个字节,击键信息集中在第 3个字节
Leftover Capture Data中值与具体按键的对应关系,可以参考
http: // http://www. usb.org/developers/hidp age/Hut1_12v2.pdf
python脚本
提出方式
1、文件-->导出分组解析结果-->保存为一个csv文件(表格) 不好用
2、使用wireshar k提供的命令行工具tshark,可以将Leftover Captuer Data数据单 独复制出来
tshark -r 流量包的名字 -T fields -e usb.capdata>目的文件名.txt
鼠标流量:
鼠标流量的提取方式和键盘的提取方式相同
鼠标数据包的数据长度为 4个字节
第一个字节代表 按键,当取 0x00,代表没有按键;为 0x01时,代表按左键;为 0x02时 ,代表当前按键为右键
第二个字节代表左右偏移
当值为正时,代表右移多少像素
当值为负时,代表左移多少像素
同理,第三个字节代表上下偏移.
脚本
用gnuplot工具把坐标画出来
命令: 1、gnuplot
2、plot "xy.txt"
脚本:
https: //github.com /WangYihang/UsbMiceDataHacker/ /鼠标流量
https: //github.com /WangYihang/UsbKeyboardDataHacker //键盘流量
摘自王一航的github
#Https流量包文件分析:
一般会给key
导入key Https == Http + TLS
英文版:P reference-->Protocols-->SSL-->edit RSA keys list
中文版:编辑-->首选项-->Protocols-->SSL-->Edit RSA keys list
版权声明:本文为CSDN博主「不做题的浮生」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接: https:// blog.csdn.net/qq_230308 71/article/details/10224992