BUUmisc刷题记录

BUU

BUU菜刀

一道流量分析的题目,首先把http流量过滤出来了,看了一下发现如下菜刀流量

url解码后base64解码获得代码,发现没有特别信息。查看http的post方法。希望看到hacker上传的文件流量

这里没什么说的看最长的包,发现了上传的文件开头FFD8,结尾FFD9是JPG文件

import binascii
s='填写16进制数据'
out=open('2.jpg','wb')
out.write(binascii.unhexlify(s))
out.close()

通过该脚本将16进制数据写道文件里面发现了密码

从该TCP流的后面部分看,应该还有一个zip文件,用foremost跑出来,输入这个密码就得到flag了

BUU一叶障目

先看了这个文件的详细信息发现没有藏东西,然后010看了一下结构发现没有什么特别的东西,到stegslove看了些基础的东西发现没有问题,然后盲水印,最后拿到pngcheck看到crc异常了。这时候才反应过来之前010也报错了没看到

这里用py脚本跑出图片的宽和高修改正确就行了

import os
import binascii
import struct   
crcbp = open("C:\\Users\\cht\\Desktop\\1.png", "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 ==0xc20f1fc6):    #图片当前CRC
            print(i, j)
            print('hex:', hex(i), hex(j))

这4个字节对应了宽和高修改后就可以看到flag了。

神奇的二维码

这道题打开是一个二维码,用QR工具扫描后发现二维码不在这里,

在010发现了在png图片里面有很多的压缩包,我用foremost分离,只能出来原来的png图片,而用binwalk可以分离出许多压缩包文件有两个压缩包要密码,而剩余的两个则是提供密码的文件

第一个是这种长串的base64加密,这里可能是多重编码,可以用basecrack进行暴力破解这种套娃base加密

BaseCrack是一款功能强大的Base编码/解码工具,该工具采用Python语言开发,是一个能够对所有字母和数字进行解码和编码的Base编码解决方案。该工具能够接收单用户输入、来自一个文件的多个输入、来自参数的输入以及多重Base编码数据,并且能够以非常快的速度完成编码/解码。

BaseCrack:一款功能强大的Base编码解码工具 - FreeBuf网络安全行业门户

basecrack.py  --magic -f basecode.txt

--magic是暴力破解模块

得到一个字符串comEON_YOuAreSOSoS0great

还有一个文件里面是简单的base64编码,解码得到asdfghjkl1234567890

这分别是我们分离出来的这2个需要密码的压缩包的密码。该18394解出来的音频文件中发现flag(用Audacity打开发现是莫斯电码解码得到)

BUU梅花香之苦寒来

这道题学会科学绘图工具gnuplot的使用,以及了解了图片中藏16进制数据转ASCII获取密文的方法

这道题首先获得了一个图片,这里用常规的查看方法,看属性,再010打开分析,是jpg图片输入图片结尾FFD9发现后面有一大串的数字,应该是16进制,这里用在线工具或者python脚本解密就可以了。

with open('hex.txt', 'r') as h:     # hex.txt为要转换的文本文件
    val = h.read()
    h.close()

with open('result.txt', 'w') as re: # 转换完成后写入result.txt
    tem = ''
    for i in range(0, len(val), 2):
        tem = '0x' + val[i] + val[i+1]
        tem = int(tem, base=16)
        print(chr(tem), end="")
        re.write(chr(tem))
    re.close()

得到了如下坐标,这里我们就可以使用gnuplot这个工具进行绘图

使用这个python脚本将坐标(a,b)转化为gnuplot可读取的a b格式

with open('gnuplotTxt.txt', 'w') as gnup:
    with open('result.txt', 'r') as res:  # 坐标格式文件比如(7,7)
        re=res.readlines()
        for i in re:
            i=i.replace('(',"")
            i=i.replace(')',"")
            i=i.replace(','," ")
            print(repr(i))
            gnup.write(i)
    #     gnup.write(tem + '\n')

接着到坐标文件路径启动gnuplot就可以绘图了

BUU outguess

通过这道题我学会了新的图片隐写工具outguess的使用,感觉和正确的steg隐写差不多。

这道题是tar类型的加密用winRAR解码得到如下文件夹

huhuhu里面的文件是直接就可以用的,我还傻fufu的去解huhuhu.zip,里面这个mmm.jpg一个flag.txt,flag.txt是伪加密,504B0102后第5个字节改为00就可以了

flag.txt什么都没有

查看mmm.jpg的消息发现了社会主义编码解码得到abc,这就是我们接下来要使用的outguess工具解码的密码了。

我在kali上安装好了该工具,如下命令使用得到flag

outguess -k "abc" -r mmm.jpg flag.txt

BUU谁赢了比赛

这道题让我知道了gif中的每一帧都可能藏东西。

解压出来是个图片

binwalk发现了有压缩包,用foremost分离出来

flag.txt没用,接下来暴力破解出hehe.gif。

看到gif直接用stegslove打开一共有300多帧,看到这个,把这一帧保存下来,查看色彩通道发现QR

得到flag

BUU我有一只马里奥

这道题涉及到了NTFS流隐写

NTFS交换数据流(alternate data streams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流,就是说除了主文件流之外还可以有许多非主文件流寄宿在主文件流中。它使用资源派生来维持与文件相关的信息,虽然我们无法看到数据流文件,但是它却是真实存在于我们的系统中的。创建一个数据交换流文件的方法很简单,命令为“宿主文件:准备与宿主文件关联的数据流文件”。————百度百科

可以直接工具一把嗦

或者用win自带命令notepad 1.txt:flag.txt

ntfs还可以藏exe,图片等

BUUgakki

这道题提醒了我面对大量无规律特征的字符串文本时可以对文本进行字频统计

给了一个图片,010发现有Rar在里面。foremost分离出rar文件,暴力破解出密码,看到flag文件

用如下脚本进行字频统计

# -*- coding:utf-8 -*-
#Author: mochu7
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- =\\{\\}[]"
strings = open('./flag.txt').read()

result = {}
for i in alphabet:
    counts = strings.count(i)
    i = '{0}'.format(i)
    result[i] = counts

res = sorted(result.items(),key=lambda item:item[1],reverse=True)
for data in res:
    print(data)

for i in res:
    flag = str(i[0])
    print(flag[0],end="")

BUUbase64隐写

得到如下,文本将使用base64两次解码后得到的c语言代码但我的代码上有一些乱码,然后我们

import base64
with open("decode_base64.txt","wb") as de:
    with open("ComeOn!.txt","rb") as f:
        bases=f.readlines()
        for i in bases:
            strs=base64.b64decode(base64.b64decode(i))
            de.write(strs)

这题其实就是base64隐写,把大佬的脚本拿出来跑就是了,原理后面来研究

base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
binstr=""
strings = open('./ComeOn!.txt').read()
e = strings.splitlines()
for i in e:
    if i.find("==") > 0:
        temp = bin((base64.find(i[-3]) & 15))[2:]
        # 取倒数第3个字符,在base64找到对应的索引数(就是编码数),取低4位,再转换为二进制字符
        binstr = binstr + "0" * (4 - len(temp)) + temp  # 二进制字符补高位0后,连接字符到binstr
    elif i.find("=") > 0:
        temp = bin((base64.find(i[-2]) & 3))[2:]  # 取倒数第2个字符,在base64找到对应的索引数(就是编码数),取低2位,再转换为二进制字符
        binstr = binstr + "0" * (2 - len(temp)) + temp  # 二进制字符补高位0后,连接字符到binstr
str = ""
for i in range(0, len(binstr), 8):
    str = str + chr(int(binstr[i:i + 8], 2))  # 从左到右,每取8位转换为ascii字符,连接字符到字符串
print(str)

BUU黑客帝国

首先我们得到了一个txt文本,里面的东西一眼16进制,我们解码解出来了Rar!这是rar的文件头,这里我们可以使用这个网站进行16进制数据转化文件

在线16进制字符串转文件工具 - 在线工具网

得到压缩包,解压出一个无法打开的文件,010查看这个文件结构发现端倪,JFIF这不是jpg的标识码,将前4个字节89504e47换成jpg文件头FFD8FFD0得到flag

这要求我们对于文件的16进制文件结构要有足够的认识

常见文件文件头和隐写术总结 CTF中Misc必备-腾讯云开发者社区-腾讯云

常见文件头文件尾

1、图片

  • JPEG 文件头:FF D8 FF 文件尾:FF D9
  • TGA 未压缩的前4字节 00 00 02 00 RLE压缩的前5字节 00 00 10 00 00
  • PNG 文件头:89 50 4E 47 0D 0A 1A 0A 文件尾:AE 42 60 82
  • GIF 文件头:47 49 46 38 39(37) 61 文件尾:00 3B
  • BMP 文件头:42 4D 文件头标识(2 bytes) 42(B) 4D(M)
  • TIFF (tif) 文件头:49 49 2A 00
  • ico 文件头:00 00 01 00
  • Adobe Photoshop (psd) 文件头:38 42 50 53

2、office文件

  • MS Word/Excel (xls.or.doc) 文件头:D0 CF 11 E0
  • MS Access (mdb) 文件头:53 74 61 6E 64 61 72 64 20 4A
  • WordPerfect (wpd) 文件头:FF 57 50 43
  • Adobe Acrobat (pdf) 文件头:25 50 44 46 2D 31 2E
  • application/vnd.visio(vsd) 文件头:D0 CF 11 E0 A1 B1 1A E1
  • Email [thorough only] (eml) 文件头:44 65 6C 69 76 65 72 79 2D 64 61 74 65 3A
  • Outlook Express (dbx) 文件头:CF AD 12 FE C5 FD 74 6F
  • Outlook (pst) 文件头:21 42 44 4E
  • Rich Text Format (rtf) 文件头:7B 5C 72 74 66
  • txt 文件(txt) 文件头:Unicode:FE FF / Unicode big endian:FF FE / UTF-8:EF BB BF /ANSI编码是没有文件头的

3、压缩包文件

  • ZIP Archive (zip) 文件头:50 4B 03 04 文件尾:50 4B
  • RAR Archive (rar) 文件头:52 61 72 21

4、音频文件

  • Wave (wav) 文件头:57 41 56 45
  • audio(Audio) 文件头: 4D 54 68 64
  • audio/x-aac(aac)
  • 文件头:FF F1(9)

5、视频文件

  • AVI (avi) 文件头:41 56 49 20
  • Real Audio (ram) 文件头:2E 72 61 FD
  • Real Media (rm) 文件头:2E 52 4D 46
  • MPEG (mpg) 文件头:00 00 01 BA(3)
  • Quicktime (mov) 文件头:6D 6F 6F 76
  • Windows Media (asf) 文件头:30 26 B2 75 8E 66 CF 11
  • MIDI (mid) 文件头:4D 54 68 64

6、代码文件

  • XML (xml) 文件头:3C 3F 78 6D 6C
  • HTML (html) 文件头:68 74 6D 6C 3E
  • Quicken (qdf) 文件头:AC 9E BD 8F
  • Windows Password (pwl) 文件头:E3 82 85 96

7、其他类型

  • windows证书文件(der) 文件头:30 82 03 C9
  • CAD (dwg) 文件头:41 43 31 30
  • Windows Shortcut (lnk) 文件头:4C 00 00 00
  • Windows reg(reg) 文件头:52 45 47 45 44 49 54 34

BUU低个头

键盘加密

flag{flag}

BUU你能看得懂音符吗

这道题压缩包不能打开010查看文件发现文件头错误,将rar文件头补全解压得到.dom文件,可能是由于wps升级的原因我们可以直接看到出题人隐藏的内容,但不能复制不知道为什么。这里我知道了将.dom文件改为压缩包解压后的如下路径有我们写入的内容

得到了音符密码,用在线网站解密得到flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值