题1


simpleness

题目描述:

1
压缩包密码是个弱口令呢!

下载附件

根据提示压缩包密码是弱口令,按解题顺序的压缩包应该是hint–key–flag

先爆破hint.zip压缩包密码

解压压缩包得到

先看图片吧

binwalk提取试试

得到一张二维码图片,扫描二维码得到

到这边暂时没什么发现了,查看hint.rar,伪加密破解

根据hint:

1
key.zip的密码范围是qsnctf大小写哦,解出来的密码可以多次使用

爆破key.zip压缩包密码

干爆破太慢,所以需要生成一个qsnctf大小写组合的字典进行爆破

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def generate_case_combinations(s):
# 初始化一个空列表来存储所有组合
combinations = []

# 遍历字符串的每个字符,生成所有可能的组合
# 使用二进制表示每个字符的大小写状态(0表示小写,1表示大写)
for i in range(2**len(s)):
# 将二进制数转换为字符串形式,并去掉'0b'前缀
binary_rep = bin(i)[2:].zfill(len(s))
# 根据二进制表示生成对应的大小写组合
case_combination = ''.join(
char.upper() if bit == '1' else char.lower()
for char, bit in zip(s, binary_rep)
)
# 将生成的组合添加到列表中
combinations.append(case_combination)

return combinations

# 调用函数并打印结果
combinations = generate_case_combinations("qsnctf")
for combo in combinations:
print(combo)

运行得到

保存为文本,进行字典爆破

解压压缩包得到

根据hint:

1
提示一:需要这个版本的工具解码SilentEye0.3.1,这个版本不一样解不出来,没考虑到版本问题,对不起大家

静默之眼3.0

想到上面的qsnctf大小写组合的密码可以多次使用,考虑密码是QsNcTf

选择AES128模式解密

保存并查看1.txt

零宽解密

密码是

1
The password is Hello World

解压flag.zip得到

查看key.txt

snow隐写

根据hint:

1
flag压缩包的密码是中文

中文电码解码

flag.zip压缩包密码为

1
这是密码吗

解压压缩包得到

图片不显示,010查看

发现文件字节不仅逆序而且还奇偶分离

奇偶分离脚本

1
2
3
4
5
6
7
8
9
10
11
12
# 打开并读取名为flag.jpg的文件内容到变量s中
with open("E:\\脚本合集\\misc\\buuctf misc\\奇偶分离\\flag.jpg", "rb") as f:
s = f.read()

# 以二进制写模式打开一个新的文件flag1.jpg,准备写入处理后的数据
with open("E:\\脚本合集\\misc\\buuctf misc\\奇偶分离\\flag1.jpg", "wb") as a:
# 遍历s中的每个4字节块
for i in range(0, len(s), 4):
# 对每个4字节块进行反转操作
s1 = s[i:i+4][::-1]
# 将处理后的4字节块写入新文件
a.write(s1)

运行生成一张图片,010查看

发现文件就光逆序了,直接b神工具一把梭

查看图片

一眼图片宽高有问题,还是b神工具一把梭得到flag

可乐加冰

下载附件

binwallk分离

查看2AE96文件

提取数

1
83 46 36 36 36 95 43 83 46 36 95 95 36 43 83 46 95 95 95 43 83 46 95 95 36 43 83 46 36 36 36 36 43 83 46 36 36 36 95 43 83 46 36 95 95 36 43 83 46 95 95 36 43 34 45 34 43 83 46 36 95 36 36 43 83 46 36 95 36 95 43 83 46 36 36 95 36 43 83 46 36 36 95 43 34 45 34 43 83 46 36 95 95 43 83 46 36 95 36 95 43 83 46 36 36 36 36 43 83 46 36 36 36 43 34 45 34 43 83 46 36 95 95 36 43 83 46 36 95 95 36 43 83 46 36 36 95 43 83 46 95 36 36 43 34 45 34 43 83 46 36 36 95 36 43 83 46 36 95 36 95 43 83 46 36 36 95 36 43 83 46 36 95 95 95 43 83 46 95 95 36 43 83 46 95 36 95 43 83 46 36 36 36 36 43 83 46 36 95 36 43 83 46 36 36 95 43 83 46 95 36 95 43 83 46 36 95 95 43 83 46 36 36 95 36

十进制转字符串

将其中的S替换成$,并补全JJencode的开头结尾

1
$.$$$_+$.$__$+$.___+$.__$+$.$$$$+$.$$$_+$.$__$+$.__$+"-"+$.$_$$+$.$_$_+$.$$_$+$.$$_+"-"+$.$__+$.$_$_+$.$$$$+$.$$$+"-"+$.$__$+$.$__$+$.$$_+$._$$+"-"+$.$$_$+$.$_$_+$.$$_$+$.$___+$.__$+$._$_+$.$$$$+$.$_$+$.$$_+$._$_+$.$__+$.$$_$

JJencode格式

1
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+这里放密文+"\"")())();

完整的JJencode密文

1
2
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$$$_+$.$__$+$.___+$.__$+$.$$$$+$.$$$_+$.$__$+$.__$+"-"+$.$_$$+$.$_$_+$.$$_$+$.$$_+"-"+$.$__+$.$_$_+$.$$$$+$.$$$+"-"+$.$__$+$.$__$+$.$$_+$._$$+"-"+$.$$_$+$.$_$_+$.$$_$+$.$___+$.__$+$._$_+$.$$$$+$.$_$+$.$$_+$._$_+$.$__+$.$$_$
+"\"")())();

jjencode解码

最后flag为

1
flag{e901fe91-bad6-4af7-9963-dad812f5624}

boooooom

下载附件

发现有密码

直接爆破密码

解压压缩包得到

password.py

1
2
3
4
5
6
7
8
9
import base64
import hashlib
f = open("password.txt",'r')
password = f.readline()
b64_str = base64.b64encode(password.encode('utf-8'))
hash = hashlib.md5()
hash.update(b64_str)
zip_passowrd = hash.hexdigest()
print(zip_passowrd)

查看password.zip

crc爆破八字节难度有点大,直接内容为八位数字的CRC爆破

1
2
3
4
5
6
7
8
9
10
11
12
#encoding:utf-8
import binascii

pwdcrc = "0xcd95dac"
for num in range(100000000):
num = str(num)
if (len(num)<8):
num = (8-len(num)) * '0' + num
calc_crc = hex(binascii.crc32(bytes(num.encode('utf8'))) & 0xffffffff)
if calc_crc == pwdcrc:
print("Password: {}".format(num))
break

运行得到

根据password.py先将08646247base64编码后再md5加密

压缩包密码为

1
95c800c52134a571dfe69114c378e4be

解压压缩包得到

宽高一把梭

最后flag为

1
flag{a184929e2c170e2b7dc12eb3106f0a16}

steganography

题目描述:

1
有一天,V的同学给了他一张图片,说里面藏着巨大的秘密。你能帮V找出秘密么?

下载附件

foremost分离

有个docx文件和压缩包里是pyc文件

docx改zip查看

发现flag.xml,010查看

20替换0,09替换1,二进制解码

压缩包里面的pyc解压发现有密码,查看word文档内容

一眼base隐写

得到压缩包密码

1
I4mtHek3y@

解压压缩包得到pyc文件,直接pyc隐写一把梭

最后flag为

1
flag{2806105f-ec43-57f3-8cb4-1add2793f508}

HALF

下载附件

010查看文件,发现还藏着一个png文件,缺少文件头

新建一个空白文件,hex模式,添加文件头

保存为half1.png

一眼双图盲水印攻击

得到

1
hLY8OTR4H}

stegsolve查看,GBR模式

最后flag为

1
flag{EwCuWKbhLY8OTR4H}

miscmisc

下载附件

foremost分离

010查看chadian.jpg,发现是png文件,而且隐藏zip文件

提取出来解压压缩包

额,假flag,chayidian.zip里也有这个flag.txt,考虑明文攻击

解压压缩包

查看png文件

stegsolve查看

pass:z^ea

发现解压错误,估计是密码不全,查看word文件,勾选隐藏文字发现

压缩包密码是 z^ea 加上这里每行字符串最后一个

1
z^ea4zaa3azf8

解压压缩包得到

最后flag为

1
flag{12sad7eaf46a84fe9q4fasf48e6q4f6as4f864q9e48f9q4fa6sf6f48}


文章作者: yiqing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 yiqing !
  目录