提示:本文章为内蒙古工业大学“深信服杯”网络安全竞赛(又名第五届内蒙古工业大学网络安全竞赛)MISC(杂项)培训总结及其题库,适合刚刚入门CTF杂项方向的小伙伴使用。原题及环境请转到本人主页的上传资源下载查看!相关工具包后续也会整理上传,敬请期待!
前言
注:misc其实是英文miscellaneous的前四个字母,杂项、混合体、大杂烩的意思。
MISC(移动信息服务中心Mobile Information Service Center),是卓望集团为了梦网计划的顺利实施为移动运营商潜心研发的首个技术支撑平台。她实现了开放价值链“服务提供商—〉网络运营商—〉用户”商业模式的有效支撑与业务管理,涉及SP管理、服务管理、用户管理、订购管理、计费管理、统计分析等运营的诸多领域。是运营商在新的网络环境下为客户提供数据业务服务的核心管理平台。
提示:以下是本篇文章正文内容
一、CRC校验
循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。
校验的应用
校验位是为了保证数据在传输过程中的完整性,采用一种指定的算法对原始数据进行计算,得出的一个校验值。接收方接收到数据时,采用同样的校验算法对原始数据进行计算,如果计算结果和接收到的校验值一致,说明数据校验正确,这一帧数据可以使用,如果不一致,说明传输过程中出现了差错,这一帧数据丢弃,请求重发。
常用的校验算法有奇偶校验、校验和、CRC,还有LRC、BCC等不常用的校验算法。
10、CRC-1
打开图片如下:
但通过honyview打开后如下
考虑到被篡改,通过010 editor查看
- 前四个字节0000000D(即为十进制的13)代表数据块的长度为13,数据块包含了png图片的宽高等信息,该段格式是固定的
- 之后的四个字节49484452(即为ASCII码的IHDR)是文件头数据块的标示,该段格式也是固定的
- 之后进入13位数据块,前8个字节0384 0096中:
前四个字节00000384(即为十进制的900),代表该图片的宽,该段数据是由图片的实际宽决定的
后四个字节00000096(即为十进制的150),代表该图片的高,该段数据是由图片的实际高度决定的
这8个字节都属于13位数据块的内容,因此数据块应再向后数5个字节,即为00 00 03 84 00 00 96 - 剩余的4位09DAD161为该png的CRC检验码,该段数据是由IDCH以及十三位数据块(即上文中的494844 520000 038400000960802000)计算得到的
通过上述,结合python代码写脚本文件如下
import binascii
import struct
crc32_hex = 0x76EC1E40
filename = 'misc25.png'
crcbp = open(filename, "rb").read()
for i in range(2000):
for j in range(2000):
data = crcbp[12:16] + \
struct.pack('>i', i) + struct.pack('>i', j) + crcbp[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
if(crc32 == crc32_hex):
print(i, j)
print('wid:', hex(i))
print('hight:', hex(j))
运行结果如下:得到实际的规格(宽&高)为:900*250
通过010 修复后得到flag
11、CRC-2
拿到题目审查,同理,得到如下被篡改的图片,尝试进行crc校验修复
发送到010 editor进行长宽校验码的查找如下:
写个python脚本进行还原
import binascii
import struct
crc32_hex = 0xEC9CCBC6
filename = 'misc26.png'
crcbp = open(filename, "rb").read()
for i in range(2000):
for j in range(2000):
data = crcbp[12:16] + \
struct.pack('>i', i) + struct.pack('>i', j) + crcbp[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
if(crc32 == crc32_hex):
print(i, j)
print('wid:', hex(i))
print('hight:', hex(j))
得到长宽信息为900*606:
最后修复图片长宽即可
得到flag信息是一段字符串中间穿插他真实高度(606)的==hex(十六进制)==形式
12、CRC-3
这道题是盲修,因为给我们的是个gif文件
GIF是一种位图。位图的大致原理是:图片由许多的像素组成,每一个像素都被指定了一种颜色,这些像素综合起来就构成了图片。GIF采用的是Lempel-Zev-Welch(LZW)压缩算法,最高支持256种颜色。由于这种特性,GIF比较适用于色彩较少的图片,比如卡通造型、公司标志等等。如果碰到需要用真彩色的场合,那么GIF的表现力就有限了。GIF通常会自带一个调色板,里面存放需要用到的各种颜色。在Web运用中,图像的文件量的大小将会明显地影响到下载的速度,因此我们可以根据GIF带调色板的特性来优化调色板,减少图像使用的颜色数(有些图像用不到的颜色可以舍去),而不影响到图片的质量。
因此进行盲修,将其所有帧率下的图片宽高(主要是高)调的大些:
得到flag:
13、CRC-4
又是个gif 的盲修,不一样的是上一张gif只有两帧,这个有emmm……很多帧哈哈
那就同理放到010 逐帧进行宽和高的修改呗(苦力活)
您好,我是GEEK社团的苦力娃,罢工一张图哈哈
14、 CRC-5
png不简单吗?
二、LSB隐写
LSB隐写术,即最低有效位(LeastSignificantBit)隐写术。是一种比较简单的基于二进制的隐写方式,能将一个完整的文件隐藏进另一张图片中。
图像一般都是以RGB三原色的方式存储的,存储后R(红)、G(绿)、B(蓝)最低有效位十六进制ASCII码三组数据按顺序规律排列,每个的取值范围为0~255,范围对应的二进制值就是00000000-11111111,LSB就是把一个文件的二进制每一位拆分修改到图片的色彩数据的二进制值最低位。
图片的图像像数一般都是由RGB三原色(红绿蓝)组成,每一种颜色占8位,取值为0x00~0xFF,就是256种,一共包含了256的3次方种颜色,即16777216种颜色
但是人类的眼睛只可以分辨大概1000万种不同的颜色,还有很多种细微的变化人类的眼睛是觉察不到的。
15、LSB-1
打开原图(png文件)不难联想到LSB(因为是多个RGB的混合叠加,因此有可能在叠加过程中进行隐写)
通过stegsolve进行分析
16、LSB-2
打开原图:
同理,打入stegsolve发现马脚
发现red\green\blue 0都有问题
打开相应的部分获取详细信息:
得到flag
17、LSB-3
打开文件,讲真,这个图真的有点看腻了-
stegsolve分析发现猫腻(真的很考验眼力)
这里需要注意的点是:他是竖着的,因此详细信息那里我们需要转换成column模式即可得到flag
18、LSB-4
打开图片
通过stegsolve分析
最后查看得到flag
文章来源:https://www.toymoban.com/news/detail-411866.html
总结
以上就是今天要讲的内容,本文仅仅简单介绍了misc入门题型及相关工具的的使用,而掌握MISC题目解题的思路和方法应当重点培养。下期见哦~(还没有更完)文章来源地址https://www.toymoban.com/news/detail-411866.html
到了这里,关于【MISC入门题型(二)--CRC校验&LSB隐写】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!