2022年暑期集训记录--6月27日

1.[湖南省赛2019]Findme

1.得到五张png,其中第一张像素有问题,用脚本计算正确的宽高

import zlib
import struct

filename = '1.png'
with open(filename, 'rb') as f:
	all_b = f.read()
	crc32key = int(all_b[29:33].hex(), 16)
	data = bytearray(all_b[12:29])
	n = 4095
	for w in range(n):
    	width = bytearray(struct.pack('>i', w))
   	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("宽为:", end="")
            	print(width)
            	print("高为:", end="")
            	print(height)

image

2.修改后图片仍无法正常显示,kali中pngcheck,显示CRC错误

image

3.010 Editor打开后可以明显看到chunk2和chunk3没有IDAT,修改十六进制数据,即为在00 00 20 00后加上49 44 41 54,加上IDAT

image
image

4.将1.png放入Stegsolve中,发现二维码

image

5.扫描后得到字符串

image

6.看2.png,在末尾发现一堆7z,猜想是与zip有关,批量修改

image
image

7.foremost分离,得到很多txt,观察到大部分大小是相同的,但最后一个大小较其他的大,打开后得到一串字符

image
image

8.pngcheck 3.png

显示CRC错误
image

9.观察每一个CRC编码值,发现chunck0-6的大小不正常,将7个CRC汇集在一起:33526C5A33303D,将其作为十六进制源码,得到字符

image

10.010 Editor打开4.png,在末尾发现字符串

image

11.010 Editor打开5.png,得到字符串

image

12.一共得到五串字符,按照原本顺序排解不出来,换别的顺序一个一个试,得到flag

image

2.flag.raw

1.根据提示,取整题,首先用 volatility -f flag.raw imageinfo获取镜像信息,得到

image

2,再查看文件,用volatility -f flag.raw --profile=Win7SP0x86 filescan | grep flag过滤名字中含有flag的文件

image

3.分离提取名为flag.txt的文件

image

4.在原来的目录下得到文件,但是名字不是flag.txt

image

5.得到flag

image

今日总结

今天主要是学习了CRC的原理以及计算方法

https://zhuanlan.zhihu.com/p/256487370

复习一部分volatility取证的命令

posted @ 2022-06-27 22:39  CPYQY_orz  阅读(64)  评论(0)    收藏  举报