【小白教程】CTF从入门到入门-03
2023-6-12 00:51:23 Author: 利刃信安攻防实验室(查看原文) 阅读量:7 收藏

11.简单取证1

https://ctf.bugku.com/challenges/detail/id/330.html

猕猴桃 mimikatz 获取用户名密码

https://github.com/gentilkiwi/mimikatz
lsadump::sam /sam:SAM /system:SYSTE

PS C:\Users\Mannix\Desktop\config\config> .\mimikatz.exe
.#####. mimikatz 2.2.0 (x64) #19041 Sep 19 2022 17:44:08 .## ^ ##. "A La Vie, A L'Amour" - (oe.eo) ## / \ ## /*** Benjamin DELPY `gentilkiwi` ( [email protected] ) ## \ / ## > https://blog.gentilkiwi.com/mimikatz '## v ##' Vincent LE TOUX ( [email protected] ) '#####' > https://pingcastle.com / https://mysmartlogon.com ***/
mimikatz # lsadump::sam /sam:SAM /system:SYSTEMDomain : DESKTOP-VBBTMVSSysKey : 37f0b72b8ef4052d5a305281c2c8905cLocal SID : S-1-5-21-2468344919-3152572563-1510310172
SAMKey : 6bbc5d51b8b9609e241bba9a2558048e
RID : 000001f4 (500)User : Administrator
RID : 000001f5 (501)User : Guest
RID : 000001f7 (503)User : DefaultAccount
RID : 000001f8 (504)User : WDAGUtilityAccount Hash NTLM: 8adf83b531e1cdadc8d16b206d87a4d5
Supplemental Credentials:* Primary:NTLM-Strong-NTOWF * Random Value : 58d06fcf956eb58ebd0869ec521014e6
* Primary:Kerberos-Newer-Keys * Default Salt : WDAGUtilityAccount Default Iterations : 4096 Credentials aes256_hmac (4096) : 1faacace6af0e20c359b06724c78091e449bf47b89acc2038f04e4ba2d572831 aes128_hmac (4096) : 709124a7e0fa42ff205ba8e78185c294 des_cbc_md5 (4096) : c8c2263e86f426d0
* Packages * NTLM-Strong-NTOWF
* Primary:Kerberos * Default Salt : WDAGUtilityAccount Credentials des_cbc_md5 : c8c2263e86f426d0

RID : 000003e8 (1000)User : administrator-QQAAzz Hash NTLM: 5f9469a1db6c8f0dfd98af5c0768e0cd
Supplemental Credentials:* Primary:NTLM-Strong-NTOWF * Random Value : ec93efdfb8a9278be59f7a1f4116a46e
* Primary:Kerberos-Newer-Keys * Default Salt : DESKTOP-VBBTMVSadministrator-QQAAzz Default Iterations : 4096 Credentials aes256_hmac (4096) : 08da13a926b2b211cb0f1ba75ab191f72ed77469734eaf1f201199e553565005 aes128_hmac (4096) : 21f966b6130439e9675a028093241e31 des_cbc_md5 (4096) : c8804662201043a2 OldCredentials aes256_hmac (4096) : cc294cf8db8838e1c973d8e868a4c32d7fd215162c9ae75a797493fd96cec3b7 aes128_hmac (4096) : d7230e305d7f9ab31247e9ed06da3e9f des_cbc_md5 (4096) : 62dfbf1c0dbc8685 OlderCredentials aes256_hmac (4096) : 11bc124de204c19f0f9305390aad0785f0bb5250eb0147a55d3ce95549bcc455 aes128_hmac (4096) : ac7b1df27906f24c8b9228e9e573f48f des_cbc_md5 (4096) : e6c7194a6eab4673
* Packages * NTLM-Strong-NTOWF
* Primary:Kerberos * Default Salt : DESKTOP-VBBTMVSadministrator-QQAAzz Credentials des_cbc_md5 : c8804662201043a2 OldCredentials des_cbc_md5 : 62dfbf1c0dbc8685

使用大型取证工具 

Magnet AXIOM Forensics v7.0.0.35443 Full Activated

12.这是一张单纯的图片

https://ctf.bugku.com/challenges/detail/id/2.html

key{you are right}

13.隐写

https://ctf.bugku.com/challenges/detail/id/3.html

隐写术是一种将信息隐藏在其他媒体中的技术。它旨在使隐藏的信息在外观上不可察觉,以便只有特定的接收者能够察觉和提取隐藏的信息。
隐写术可以应用于各种媒体和领域,包括图像、音频、视频、文本等。以下是一些常见的隐写术方法:
1. 图像隐写术:在图像文件中隐藏信息,常见的方法包括最低有效位(LSB)隐写、使用不可感知的色彩变化、使用频域技术如离散余弦变换(DCT)等。
2. 音频隐写术:在音频文件中隐藏信息,例如通过微小的频谱变化、频率偏移或相位调制等。
3. 视频隐写术:在视频文件中隐藏信息,可以通过帧插入或修改、帧重排序、运动矢量调整等方法实现。
4. 文本隐写术:在正常文本中隐藏信息,例如使用特定的字体、格式或排版规则来表示隐藏信息。
5. 网络隐写术:在网络协议的数据包中隐藏信息,例如在TCP/IP协议中使用特定的标志位或序号来表示隐藏信息。
隐写术可用于各种目的,包括信息隐藏、数字水印、数字版权保护等。然而,它也可能被用于非法目的,如隐秘传递恶意代码或进行恶意活动。因此,在实践中,隐写术的使用需要遵循适用的法律法规和道德准则,并且应获得合法和合理的授权。
在CTF(Capture The Flag)比赛中,隐写术题目常常涉及将隐藏的信息嵌入到给定的媒体文件中,例如图像、音频或文本。以下是一些解决隐写术题目的常见思路和技巧:
1. 文件分析:首先,对给定的文件进行详细的分析。这包括检查文件的文件类型、文件头和文件尾等。有时文件的扩展名可能是误导性的,因此不应该仅依赖于文件扩展名。
2. 图像隐写术:对于图像题目,可以尝试使用隐写工具或脚本来提取隐藏的信息。常见的工具包括Steghide、Stegsolve、zsteg等。可以尝试查找隐藏信息的特征,例如像素值的变化、频域的异常、色彩通道的差异等。
3. 文本隐写术:对于文本题目,可以检查文本的编码、特殊字符、格式或排版规则。有时隐藏信息可能以不寻常的方式编码,例如使用Base64、二进制或其他自定义编码方法。
4. 音频隐写术:对于音频题目,可以尝试使用音频编辑软件或脚本来检查频谱、波形、声音变化等。频谱分析和频域操作可能揭示出隐藏信息。
5. 文件差异比较:有时,题目会提供两个看似相同的文件,但它们之间可能有微小的差异。使用文件比较工具,例如BinDiff、Binwalk等,可以帮助发现隐藏的信息。
6. 暗示和提示:仔细阅读题目的描述、提示和附加的提示信息。有时会提供一些线索,如特定的技术、加密算法或隐藏信息的位置。
7. 脚本和自动化工具:根据不同的隐写技术,编写自己的脚本或使用现有的隐写工具来自动化解决问题。这样可以提高效率并减少手动操作的错误。
用winhex打开,修改图片宽度或者高度,一般来说修改高度,宽高在第二行,第二个四字节就是高度,一般把高度改大或者将高度改为和宽度一样就可以得到flag。
用winhex打开图片,修改图片高度为500,宽和高在第二行。
图片打开看像素,宽高不等(500*420),使用winhex将00 00 01 A4 修改成00 00 01 F4 并保存,得到flag。
用tweakPNG改更方便,个人觉得比起winhex和010editor
TweakPNG是一个用于编辑和分析PNG图像文件的工具。它允许你查看和修改PNG文件的各种元数据、块数据和图像信息。以下是关于TweakPNG的一些基本信息和用法:
1. 工具名称:TweakPNG
2. 开发者:Lode Vandevenne
3. 功能:用于编辑和分析PNG图像文件
4. 平台支持:TweakPNG可在Windows上运行,并且不需要安装,只需下载并运行可执行文件即可。
使用TweakPNG可以执行以下操作:
1. 查看PNG文件信息:TweakPNG可以显示PNG文件的各种信息,包括图像尺寸、颜色类型、压缩方式、关键块(如IHDR、PLTE、tEXt等)的内容等。
2. 修改PNG文件:TweakPNG允许你编辑和修改PNG文件的元数据和块数据。你可以添加、删除、修改和重新排列图像块,包括关键块和附加块。
3. 分析PNG文件:TweakPNG提供了一些分析工具,可帮助你检查PNG文件中的错误、警告和潜在的问题。它可以检查文件的一致性、CRC校验和其他可能的问题。
4. 修复PNG文件:TweakPNG可以尝试修复某些PNG文件中的问题,如损坏的CRC校验和其他一致性错误。
请注意,TweakPNG是一个强大的工具,但在使用它时需要小心。对PNG文件进行不正确的修改可能会导致图像损坏或无效的文件。在使用TweakPNG或任何其他PNG编辑工具时,请始终备份原始文件,并在非生产环境中进行操作。
你可以在TweakPNG的官方网站(https://entropymine.com/jason/tweakpng/)上获取更多关于该工具的信息,并下载可执行文件进行使用。

WinHex打开图片,“89504E0D0A1A0A”说明这是PNG图片,“0000000D”表示IHDR头部是13个字节,“000001F4”是宽度,“000001A4”是高度(以像素为单位),修改A4为F4,保存查看图片。

根据png的格式进行查看,第一行是png的pe头,第二行是png的宽和高,将第二行宽和高修改为相同,就可以了。(固定)八个字节89 50 4E 47 0D 0A 1A 0A为png的文件头 (固定)四个字节00 00 00 0D 代表数据块的长度为13 (固定)四个字节49 48 44 52(即为ASCII码的IHDR)是文件头数据块的标示(IDCH) (可变)13位数据块(IHDR)

图片高度被修改,但是CRC未被修改,可以根据CRC的计算规则去爆破真实高度,得到真实高度1F4,修改保存即可。
TweakPNG,打开发现长度500,高度420;像素是4724*4724;推断修改高度为500.保存。得到结果。
科普:PNG图片格式

1. 开头的0~7八个字节为png的文件头:89 50 447 0010A (固定格式)2. 8~11四个字节:00 00 00 0D 表示头部数据块的长度为13(固定格式)3. 12~15四个字节:49 48 44 52 表示文件头数据块的标示(固定格式)4. 16~19四个字节:00 00 01 F4表示图片的宽(不固定)5. 20~23四个字节:00 00 01 F4表示图片的高(不固定)6. 24~28五个字节:08 06 00 00 00表示Bit depth(图像深度)、ColorType(颜色类型)、 Compression method(压缩方法)、 Filter method(滤波器方法)、Interlace method(隔行扫描方法)这五个字节不固定,均为可变数据7. 29~32四个字节:CB D6 DF 8A为图片的crc校验值由从第12个字节到第28个字节的十七位字节进行crc计算得到
PNG(Portable Network Graphics)图像文件使用CRC(循环冗余校验)算法来验证数据的完整性。CRC是一种校验算法,它可以检测数据传输或存储过程中的错误。
PNG图像文件由多个数据块组成,其中每个数据块都有一个四字节的CRC校验值。CRC校验值存储在数据块的末尾,用于验证数据块中的数据是否完整和正确。
CRC校验算法使用多项式运算,根据数据块的内容计算出一个32位的校验值。计算过程涉及到多项式的除法和模运算,将数据块中的每个字节与多项式进行异或操作,然后逐位地进行移位和处理。
PNG图像文件的CRC校验值用于验证数据块的完整性。在读取PNG图像时,可以通过计算数据块的内容并与存储的CRC校验值进行比较,以确保数据块没有被篡改或损坏。
在处理PNG图像时,你可以根据数据块的类型和数据,使用上述步骤来计算CRC校验值,并将计算得到的CRC值与存储在数据块中的CRC值进行比较,以验证数据块的完整性。

CRC(循环冗余校验)在线计算

http://www.ip33.com/crc.html
输入第12到第28共十七位字节,参数模型选择crc32,点击计算,得到图片crc校验值

PNG图片使用CRC(循环冗余校验)来验证数据的完整性,确保数据在传输或存储过程中没有发生错误或损坏。CRC是一种错误检测机制,通过对数据进行计算,生成一个校验值,然后将该校验值附加到数据中。
在PNG图像中,CRC主要用于校验每个块(chunk)的数据。PNG图像由多个块组成,其中最重要的是IHDR块(图像头块),它包含了图像的基本信息,如宽度、高度、色彩类型等。每个块都有一个类型码和数据部分,其中包含了关于该块的信息。
CRC校验值是通过对块的类型码和数据进行计算得到的。PNG使用的CRC算法是标准的CRC-32算法。它基于多项式除法,将块的类型码和数据转换为比特流,然后通过除法和异或运算来计算校验值。
PNG图像中的每个块都包含一个校验值字段,用于存储计算得到的CRC校验值。在接收或读取PNG图像时,系统会对每个块的数据进行CRC校验,将计算得到的校验值与存储在图像中的校验值进行比较,以验证数据的完整性。
如果计算得到的校验值与存储的校验值不匹配,说明数据可能已经损坏或被篡改。
通过使用CRC校验,PNG图像可以检测到数据传输或存储中的错误,并确保数据的完整性和准确性。
http://www.libpng.org/pub/png/apps/pngcheck.html
利用pngcheck得到正确的CRC值:cbd6df8a
CRC error in chunk IHDR (computed c758d77d, expected cbd6df8a)

import binasciiimport structimport threading
crc32key = 0xcbd6df8anum_threads = 8 # 设置线程数
class HeightFinder(threading.Thread): def __init__(self, start_height, end_height): super(HeightFinder, self).__init__() self.start_height = start_height self.end_height = end_height
def run(self): for i in range(self.start_height, self.end_height): try: height = struct.pack('>i', i) data = b'\x49\x48\x44\x52' + b'\x00\x00\x01\xF4' + height + b'\x08\x06\x00\x00\x00' # 29~32四个字节:CB D6 DF 8A为图片的crc校验值由从第12个字节到第28个字节的十七位字节进行crc计算得到 crc32result = binascii.crc32(data) & 0xffffffff if crc32result == crc32key: print(''.join([format(c, '02x') for c in height])) return except Exception as e: print(f"An error occurred: {e}")
def find_height(): threads = [] height_range = 65535 chunk_size = height_range // num_threads
for i in range(num_threads): start_height = i * chunk_size end_height = (i + 1) * chunk_size if i < num_threads - 1 else height_range thread = HeightFinder(start_height, end_height) threads.append(thread) thread.start()
for thread in threads: thread.join()
if __name__ == '__main__':    find_height()

当然,可以根据PNG图片特性和CRC校验值计算方式来进行爆破
import binasciiimport structimport threading
crcbp = open("2.png", "rb").read() # 打开图片crc32frombp = int(crcbp[29:33].hex(), 16) # 读取图片中的CRC校验值print(crc32frombp)
class SizeFinder(threading.Thread): def __init__(self, start_width, end_width): super(SizeFinder, self).__init__() self.start_width = start_width self.end_width = end_width
def run(self): for i in range(self.start_width, self.end_width): try: for j in range(4000): data = crcbp[12:16] + \ struct.pack('>i', i) + struct.pack('>i', j) + crcbp[24:29] crc32 = binascii.crc32(data) & 0xffffffff if crc32 == crc32frombp: print(i, j) print('hex:', hex(i), hex(j)) return except Exception as e: print(f"An error occurred: {e}")
def find_size(): threads = [] num_threads = 8 # 设置线程数 width_range = 4000 chunk_size = width_range // num_threads
for i in range(num_threads): start_width = i * chunk_size end_width = (i + 1) * chunk_size if i < num_threads - 1 else width_range thread = SizeFinder(start_width, end_width) threads.append(thread) thread.start()
for thread in threads: thread.join()
if __name__ == '__main__': find_size()

14.telnet

https://ctf.bugku.com/challenges/detail/id/4.html

15.眼见非实

https://ctf.bugku.com/challenges/detail/id/5.html

Binwalk是一种用于分析和提取嵌入式设备固件或任何二进制文件中的隐藏信息的工具。它可以扫描文件并识别文件中的各种类型的数据和文件系统,包括压缩文件、图像、音频文件、固件等。Binwalk可以帮助安全研究人员、嵌入式设备开发人员和逆向工程师分析和理解二进制文件的内部结构和内容。
Binwalk支持各种类型的文件扫描和分析,它可以自动检测和提取许多常见的文件类型,例如ZIP、GZIP、JPEG、PNG、BMP、MP3等。它还可以识别和提取嵌入式设备固件中的文件系统,如SquashFS、JFFS2等。
使用Binwalk的基本命令格式为:
binwalk [选项] <文件名>
以下是一些常用的Binwalk命令选项:
- `-e` 或 `--extract`:提取嵌入在文件中的所有文件。
- `-D` 或 `--dd`:提取嵌入在文件中的所有文件,使用"dd"命令。
- `-M` 或 `--matryoshka`:扫描嵌套的文件。
- `-B` 或 `--disasm`:对已知的固件代码进行反汇编。
- `-A` 或 `--opcodes`:搜索固件中的特定CPU指令。
- `-x` 或 `--exclude`:排除特定类型的文件。
- `-f` 或 `--signature`:使用自定义签名文件进行扫描。
- `-l` 或 `--list`:列出所有已知的签名文件。
以下是一些示例使用Binwalk的命令:
1. 扫描文件:
binwalk firmware.bin
2. 提取嵌入在文件中的所有文件:
binwalk -e firmware.bin
3. 提取嵌入在文件中的所有文件,使用"dd"命令:
binwalk -D firmware.bin
4. 扫描并识别文件中的嵌入式文件系统:
binwalk -e -M firmware.bin
5. 对已知的固件代码进行反汇编:
binwalk -B firmware.bin
6. 搜索固件中的特定CPU指令:
binwalk -A "mov eax, ebx" firmware.bin
7. 使用自定义签名文件进行扫描:
binwalk -f custom.sig firmware.bin

下载解压后打开docx,用010打开之后发现是50 4b 03 04,发现是zip,说明是zip文件,需要将docx后缀改为zip再次解压,然后把文件夹拖进vscode里面,搜索flag就可以得到,会得到两个文件,再选择第二个就得到flag。

压缩包全局搜索

在Visual Studio Code中,您可以按Ctrl + Shift + F打开搜索面板,然后输入要搜索的字符串,选择要搜索的文件夹,并点击搜索按钮。

foremost分离文件,检查xml文件,发现有flag

Foremost是一个命令行程序,用于根据文件的头部、尾部和内部数据结构来恢复文件。它可以进行数据刻录,即通过分析文件的特定模式和结构,尝试从损坏、删除或未分配空间中恢复文件。
下面是Foremost工具的详细介绍和使用命令:
1. 安装Foremost:在Linux系统上,可以使用以下命令安装Foremost:
sudo apt-get install foremost
2. 准备工作:首先,您需要准备一个待恢复文件的镜像文件或直接操作的磁盘。镜像文件可以使用工具如`dd`创建,以保护原始数据的完整性。
3. 执行文件恢复:使用Foremost执行文件恢复操作。命令格式如下:
foremost [选项] <输入文件或设备>
以下是一些常用的Foremost命令选项:
- `-t <文件类型>`:指定要恢复的文件类型。可以使用`-t all`来恢复所有已知类型的文件。
- `-o <输出目录>`:指定输出目录,即恢复的文件将保存在该目录中。
- `-i`:忽略错误,继续进行文件恢复操作。
- `-v`:显示详细的恢复过程信息。
示例命令如下:
foremost -t all -i -v -o /path/to/output image.dd
在执行命令后,Foremost会根据文件的头部、尾部和数据结构进行扫描,并尝试恢复匹配到的文件,然后将它们保存到指定的输出目录中。

文章来源: http://mp.weixin.qq.com/s?__biz=MzU1Mjk3MDY1OA==&mid=2247504566&idx=1&sn=92fa88558338c9db4fa402c5f44ed362&chksm=fbfb627bcc8ceb6d84c68c29a01686c598f97aa4d9a47087c58a89d72bded0ad841f6c5b8526#rd
如有侵权请联系:admin#unsafe.sh