Lufer

  • 首页
  • 编程
  • 学习笔记
  • 日常折腾
Lufer
Code the World
  1. 首页
  2. 学习笔记
  3. 正文

CTF 杂项笔记

2022年6月16日 657点热度 2人点赞 0条评论

隐写

文件类型识别

当文件没有后缀名或者有后缀名而无法正常打开时,根据识别出的文件类型 来修改后缀名即可正常打开文件。

File命令

file 文件名

Winhex

通过Winhex来查看文件头部,常见文件类型的头部数据如下。

PNG文件

PNG文件头

(固定)八个字节89 50 4E 47 0D 0A 1A 0A为png的文件头

(固定)四个字节00 00 00 0D(即为十进制的13)代表数据块的长度为13

(固定)四个字节49 48 44 52(即为ASCII码的IHDR)是文件头数据块的标示(IDCH)

(可变)13位数据块(IHDR)

1)前四个字节代表该图片的宽
2)后四个字节代表该图片的高
3)后五个字节依次为:
Bit depth、ColorType、Compression method、Filter method、Interlace method

(可变)剩余四字节为该png的CRC检验码,由从IDCH到IHDR的十七位字节进行crc计算得到。

CRC爆破计算原图宽高

# png crc爆破长宽
import zlib
import struct
 
# with open(r'./normal_png.png', 'rb') as image_data:
with open(r'./2.png', 'rb') as image_data:
    bin_data = image_data.read()
data = bytearray(bin_data[12:29])  # 读出Chunk Type Code域和Chunk Data部分
print(hex(zlib.crc32(data)))
print(zlib.crc32(data))
print("===================================")
# 计算原始CRC32值
crc32Hexstr = "0x"
for i in range(4):
    rep = str(hex(bin_data[i + 29])).replace("0x", "")
    if len(rep) == 1:
        rep = "0" + rep
    crc32Hexstr += rep
# crc32Hexstr="0x401f4a01"
crc32key = eval(crc32Hexstr)  # 转十进制
print("CRC32:%s(Hex) %s(Dec)" % (crc32Hexstr, crc32key))
print("============running==================")
n = 4096  # 4k分辨率
# 爆破高和宽
for w in range(n):
    width = bytearray(struct.pack('>i', w))  # q为8字节,i为4字节,h为2字节
    for h in range(n):
        height = bytearray(struct.pack('>i', h))
        for x in range(4):
            data[x + 4] = width[x]
            data[x + 8] = height[x]
        crc32result = zlib.crc32(data)
        if crc32result == crc32key:
            print("width:0x%s  height:0x%s" % (bytearray(width).hex(),
                                               bytearray(height).hex()))
            exit()

Web

PHP伪协议

php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致任意文件读取:index.php?file=php://filter/read=convert.base64-encode/resource=index.php

标签: 暂无
最后更新:2023年7月10日

Lufer

新的一天开始啦

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

文章目录
  • 隐写
    • 文件类型识别
      • File命令
      • Winhex
    • PNG文件
      • PNG文件头
      • CRC爆破计算原图宽高
  • Web
    • PHP伪协议

COPYRIGHT © 2022 lufer.cc.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021045819号