Bugku misc wp

使用Ctrl+f快速查找题目!!!

chatgpt1&2

1可以直接问出来,2利用规则清除规则后可以问出来

社工-进阶收集

利用百度识图得到关键位置信息

根据小美从家到韦曲南800米,到航天站1公里多,挨个尝试路径中的小区最后得到结果兰桥国际城

1和0得故事

修改二维码定位坐标后,转换为二维码,扫码得到flag

from PIL import Image
s=25
ewm=Image.new('RGB',(s,s))
str="1111111001110010001111111100000100001111010100000110111010011100010010111011011101010111100001011101101110101010101000101110110000010011000101010000011111111010101010101111111000000000100000110000000011000111011101101000110000001000010110010010010100010011110100001110111001100111101001010110010010011000001001100001001101000111100011111101110010100010110111110011011111101111000110110010010101101100100011110011111111111011100000000101100011000101001111111010010100101010001100000101010101010001100110111010001001111111100101011101000011001011110111101110100100110010010000110000010110000110110110011111111011010000101110101"
i=0
for x in range(0,s):
    for y in range(0,s):
        if str[i] == "1":
            ewm.putpixel([x,y],(0,0,0))
        else:
            ewm.putpixel([x,y],(255,255,255))
        i=i+1
ewm.show()
ewm.save("flag.png")

easy_nbt

flag明文就在某个文件里面

简单取证1

使用工具mimikatz

解密md5得forensics

这是一张单纯的图片

010打开后发现末尾有隐藏数据

key{you are right}

Unicode解密得到flag

隐写

修改图片宽高后即可看到flag

talnet

追踪TCP流后就可以看到flag

眼见非实

docx可以当压缩包解压,flag明文在其一文件内

啊哒

exif信息中有一串数字base16解密得到sdnisc_2018

foremost分离图片得到压缩包,解压得到flag

ping

打开后发现Data中连续数据一位置字符分别为flag,拼接即可得到flag

Snowfall

使用在线网站放入step1得到keyH0wt0Pr1ntAWh17e5p4ceC0de

放入step2后,发现7z flag等关键词

把debug中内容保存为test.txt,用脚本做成压缩包

import re
from queue import LifoQueue
with open("test.txt", "r") as f:
	data = f.read()
	data = data.splitlines()
stack = LifoQueue()
ret = ""
for line in data:
	if "push" in line:
		num = int(re.findall("push (.*?)$", line)[0])
		stack.put(num)
	elif line == "add":
		stack.put(stack.get() + stack.get())
	elif line == "dup":
		num = stack.get()
		stack.put(num)
		stack.put(num)
	elif line == "drop":
		stack.get()
	elif line == "printc":
		asc = chr(stack.get())
		# print(asc, end="")
		ret += asc
bin_data = ret.encode("latin1")
with open("1.7z", "wb") as f:
	f.write(bin_data)

解压后,再次重复上述步骤,用脚本即可得到flag

import re
from queue import LifoQueue
with open("test2.txt", "r") as f:
	data = f.read()
	data = data.splitlines()
stack = LifoQueue()
ret = ""
for line in data:
	if "push" in line:
		num = int(re.findall("push (.*?)$", line)[0])
		stack.put(num)
	elif line == "add":
		stack.put(stack.get() + stack.get())
	elif line == "dup":
		num = stack.get()
		stack.put(num)
		stack.put(num)
	elif line == "drop":
		asc = chr(stack.get())
		print(asc, end="")

贝斯手

根据介绍.txt文件尾信息得到压缩包密码1992,解压后得到flag.txt

5是MD5,58是Base58,分别解密后即可得到flag

可爱的故事

根据原神游戏文字对应表一一对应即可得到flag

赛博朋克

压缩包为伪加密,010打开后修改此处为00即可解压

解压后修改txt为png,用stepsolve打开,lsb隐写下可以看到flag

再也没有纯白的灵魂

根据兽音编码,“嗷呜啊~”依次对BUGK进行转换

使用在线网站解密得到flag

where is flag 番外篇

用实际大小-压缩大小得到75 101 121 58 90 104 117 71 76 64 64 46 48

Ascii转换后得到Key:ZhuGL@@.0

解压后发现flag in here{LjFWBuxFNTzEWv6t2NfxjNFSH1sQEwBt5wTTLD1fJ}

对里面内容进行Base58解密得到flag

blind_injection

import re
text=[]
with open(r"cap.pcap","rb") as f:
    for i in f.readlines():
        if b"?id=1'%20and%20substr((select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database())" in i:
            text.append(i.strip())
f.close()
flag={}
for i in text:
    try :
        num = int(re.search(br"database\(\)\),(\d+),1\)",i).group(1).decode())   
        str = re.search(br"1\)='(.|\n)'%20--\+ HTTP/1.1",i).group(1).decode()   
        flag[num] = str                   
    except:
        pass
for i in flag.values():
    print(i,end="")

FileStoragedat

使用WXDatConvter转换为png后即可看到flag

linux

虚拟机下运行strings flag即可看到flag

白哥的鸽子

文件尾有fg2ivyo}l{2s3_o@aw__rcl@字符,栅栏解密即可得到flag

富强民主

使用bugku自带的社会主义编码解密即可得到flag

split_all

from PIL import Image
im = Image.open('file.gif')
for i in range(770):
    im.seek(i)
    im.save('f/'+str(i)+'.png')
new_one = Image.new('RGB', (770, 432))
for j in range(770):
    ima = Image.open('f/'+str(j)+'.png')
    new_one.paste(ima, (j, 0, j+1, 432))
new_one.save("flag.png")

多种方法解决

010打开后发现是jpg的base64编码,转换回jpg后扫码即可得到flag

宽带信息泄露

用routerpassview打开后找到用户名即可

come_game

开始游戏后会生成save1文件,010打开改2为5即可得到flag

简单套娃

01打开后发现有两个头,删除第二个头前面的内容保存
ps打开,在蓝通道下可以看到flag

look

010打开后发现是个zip,改后缀解压,在kali下使用zsteg -a look.bmp,即可看到flag

放松一下吧

解压,再解压其中不需要密码的压缩包

进入游戏后出现一个save1文件,第一关没有显示可更改的关卡数据需要通过第一关

通过后用010 editor编辑器打开看看

把32改成33后重开

Password中有密码图像想到base100解密得66666666

刷新图片意思为F5解密,使用工具解密,flag在输出的out.txt内

逆向入门

用notepad++打开后复制里面内容保存到另一个文档,再修改后缀为html,打开扫码即可得到flag

cisco

打开2.txt是U2FsdGVkX19T7VS86emCFReuh2Tjc3ZtbB5HMHebPd8=

AES解密得到hint:文件后缀

根据题目修改1.txt后缀为pkt

用模拟器软件Cisco Packet Tracer打开后输入作者给的密码flag进入特权模式

再用指令show running-config | include flag得到flag

disordered_zip

下载后发现打不开,放入010发现缺pk头,补上

foremost分离后补上图片定位符,扫码得到一串字符

栅栏解密后得到压缩包密码

解压后内部文件格式为pdf,使用wbStego4.3open解密得到flag

被勒索了

下载火绒软件,把Sysclean文件放入ProgramData文件夹中

打开火绒隔离区,恢复文件flag.txt文件得到flag

simple MQTT

526172为rar头,提取为rar文件后使用密码解密得到flag

请攻击这个压缩包

没有任何提示且内部文件为png所以使用bkcrack明文攻击,最后得到flag

echo -n "89504E470D0A1A0A0000000D49484452" | xxd -r -ps >key
time bkcrack -C file.zip -c flag.png -p key -o 0    
bkcrack -C file.zip -c flag.png -k 92802c24 9955f8d6 65c652b8 -d flag.png

密室逃脱

根据docx内容摩斯解密得到电脑密码:xjpc,解压电脑密码

发现图片位置内容偏移,修改得到WiFi密码:123456和压缩包解压密码:654321,再次解压

从同一认定.docx得到解压密码:welc,解压后对应开始的文件得到0me,拼接得到flag

铁子,来一道

垃圾桶 零宽隐写 The wifi pass is donotplayxingtietoomuchtime
用密码解开自己卧室的压缩包得到jpg图片,foremost分离得到png二维码,扫描得到flag

想要种子吗

binwalk分离文件,exif信息中发现相机序列号提示steghide,kali下使用

steghide extract -sf torrent.jpg

分离出123.txt,内含百度网盘地址,下载后打开hint,提示six,直接爆破6位密码结果为666666

解压后,foremost分离图片得到一个压缩包,再次解压,调整图片高度后得到

010打开图片,文件尾部有网址https://www.guballa.de/vigenere-solver ,更换合适的加密方式即可得到flag

哥哥的秘密

进入妹妹QQ2492853776 空间,搜集相关信息

刘佳佳,四川乐山市,2000.12.26

使用在线网站,解密盲文,得到hint:密码=时地人lsljj20001226

⠀⡘⠀⡙⠀⡞⠀⡄⣿⠪⡛⣶⡸⠱⠀⠍⡥⣆⡗⠀⡎⢊==

 进入相册,根据信息输入密码lsljj20001226

搜索这个博客,得到信息电话2598888

查找2598888号码,地址乐山市,得到哥哥公司名称:尚纬股份有限公司

输入后得到一张图片,下载下来

foremost分离得到一张图片和题目描述,题目描述里出现沉默之眼,使用SilentEye查看隐藏信息得到key:OhG0dPleaseN0

binwalk分离出一个压缩包,用key解压压缩包,得到password.txt内容

第一行零宽隐写,得到hint:密文后两位是OK

循环base64解码后面的base,得到hint:密文前三位IWF

根据题目要求,将密文作为主题发送到邮箱:a2492853776@163.com

base58解码再16进制转字符串再base32解码再base64解码得到key:youfindme!

输入到flag相册中即可得到flag

blind_injection2

#导出http,找末尾带=号的
str = [105,110,102,111,114,109,97,116,105,111,110,95,115,99,104,101,109,97,32,99,104,97,108,108,101,112,103,101,115, 32,102,108,97,103,95,56,97,102,56,101,48,51,99,54,56,57,50,52,55,54,102,56,52,100,49,101,51,52,55,49,56,55,98,50,52,52,57]
for i in str:
    print(chr(i), end='')

where is flag

s="98,117,103,107,117,123,110,97,48,100,48,110,103,100,97,107,97,49,125"
f=""
l=s.split(",")
for i in range(len(l)):
    ss=chr(int(l[i]))
    f=f+ss
print(f)

Pokergame

Foremost分离大小王,小王内zip未加密,搜504B改第九位09为00

打开后是二维码另一半,进行拼接和修改,QR识别后得key{P0ke_Paper}

QR识别后得key{P0ke_Paper}

解压第一个解压包,解压后发现k比较特别01打开发现是zip

改后缀后发现需要密码,打开David文件,根据提示编写脚本解的密码

import base64
s="2345678910A2345678910A23456789102345678910AA2345678910A234567891023456789102345678910AAA2345678910A234567891023456789102345678910AA23456789102345678910AAA2345678910AAA2345678910AA234567891023456789102345678910AA2345678910A23456789102345678910A2345678910234567891023456789102345678910AA2345678910A2345678910AA2345678910AA23456789102345678910AAA2345678910AA23456789102345678910A234567891023456789102345678910A234567891023456789102345678910AAA23456789102345678910AAA2345678910234567891023456789102345678910AA23456789102345678910AAA2345678910AA23456789102345678910A234567891023456789102345678910A234567891023456789102345678910AAA2345678910A2345678910A2345678910AA23456789102345678910AAA23456789102345678910AA2345678910AA234567891023456789102345678910A23456789102345678910A2345678910234567891023456789102345678910AA2345678910A2345678910234567891023456789102345678910A234567891023456789102345678910AA2345678910A2345678910A2345678910AA234567891023456789102345678910A234567891023456789102345678910AA23456789102345678910AA2345678910A2345678910A2345678910A2345678910A2345678910AA23456789102345678910AAA2345678910AA2345678910234567891023456789102345678910A23456789102345678910AA23456789102345678910A23456789102345678910A2345678910A2345678910AA234567891023456789102345678910AA2345678910A2345678910A2345678910A23456789102345678910A23456789102345678910A2345678910A234567891023456789102345678910AAA2345678910AA2345678910AA234567891023456789102345678910AAAA2345678910A23456789102345678910A23456789102345678910A23456789102345678910A2345678910A234567891023456789102345678910A2345678910A2345678910AAA2345678910A234567891023456789102345678910AA2345678910AA234567891023456789102345678910AA23456789102345678910A2345678910A2345678910A2345678910AA2345678910234567891023456789102345678910AAA2345678910A234567891023456789102345678910A2345678910A23456789102345678910234567891023456789102345678910A2345678910A2345678910A234567891023456789102345678910A2345678910A2345678910A2345678910A2345678910AA23456789102345678910A234567891023456789102345678910AA23456789102345678910AA23456789102345678910A2345678910A2345678910AAA2345678910A2345678910A2345678910AAA23456789102345678910AAA23456789102345678910A23456789102345678910AA234567891023456789102345678910A2345678910A2345678910AA2345678910A23456789102345678910A234567891023456789102345678910AAA23456789102345678910AAA23456789102345678910A2345678910AAA23456789102345678910234567891023456789102345678910AA23456789102345678910A234567891023456789102345678910A23456789102345678910A23456789102345678910234567891023456789102345678910AA234567891023456789102345678910234567891023456789102345678910AAAA2345678910A"
s=s.replace("2345678910","0").replace("A","1")
k=""
for i in range(0,len(s),8):
	k=k+chr(int(s[i:i+8],2))
print(base64.b64decode(k))
#b'Happy to tell you key is Key{OMG_Youdoit}'

解压k.zip,修改k.jpg高,,用stepsolve打开,比较得到倒写的flag

whereisflag4

解压后对txt内容进行base64解密再转换为16进制,发现每两位的第一位刚好组成504B,编写脚本提取出来,导入01中保存为zip,解压得到flag

s="5d 03 46 b8 07 3d 0c 4a 11 4c 01 05 03 28 05 0c 0e 81 0f 0c ff 0c 94 98 6e 3a 5e 38 10 59 09 b8 37 ed d9 8b 35 88 0d 04 0d 09 0c 09 3f 89 08 02 03 01 06 07 06 8d 0c 0a 0e 02 04 0a 6c 62 6d cb 6e 11 6c 7f 25 ef 73 4e 7c 81 7f 43 4c be c2 bf 44 91 41 ca ab fa 0b e2 c9 98 46 8b 8b df cf f4 c3 a6 2f fb 28 dd c7 a6 4c ba a7 dc 8a cc c2 fe 40 fa 8d bd c0 fc c0 9e ca fd ce f3 ce ee c9 c8 4c bf 8d fd 4a f3 cd bf 29 fc 84 aa 2f f5 0d 1f 47 ad ab 51 01 1a d0 51 c3 4f 68 71 1e 65 ce 76 14 7e ab 5a 22 6e e4 66 ea 48 55 4f cd 62 af 72 94 5a ec 60 2a 9d df 62 08 2d 08 08 52 05 49 b9 07 17 0e 24 1a 47 09 04 1c 4d 0e 0d 09 23 03 0e 0a 84 06 06 f0 06 90 9e 65 38 50 3e 1e 58 0c b5 33 eb dc 8a 33 80 00 0d 03 04 0e 0d 3e 80 01 0b 03 01 08 0b 0b 86 0d 02 23 48 0a 0c 02 0e 07 00 00 03 0d 0c 00 0d 04 0b 2e 06 0d 0e 0d 09 03 00 0e 0c 04 05 03 0a 08 0a 6e 62 6e c2 6b 16 69 70 28 ec 7f 4e 79 8e 72 48 0b a9 09 0c 21 08 03 08 0a 08 0d 02 0b 04 03 0a 0a 1e 0e 0f 1b 85 0f 07 3e 2b 6e 76 be ee 1f c1 aa 48 d7 00 d7 72 0c 1f a7 1d 69 51 5a 01 1a d9 af 4c dd 0c db 7e 05 11 18 f6 d4 30 78 d9 6c 85 ad 38 d8 09 d0 7e 07 1a 5c 09 47 b2 02 52 04 6e 04 0e 07 09 0b 00 0b 0d 07 11 0d 01 03 1e 0c 06 59 a9 0a 0d 0c 00 0c 0d 5c ec 09 0b 04 04 07 0a 03 03 0f 0e"
s=s.replace(" ","")
s=s[0::2]
print(s)


清凉一夏

foremost分离得压缩包,扫二维码得密码
解压后得到一张图片
01打开缺头补头,拉长图片得到key
rabbit解密+base64解密得密钥flag
jphs工具打开图片输入密钥解密得到flag文件

easy_python

不断修改得到结果56392,根据要求加密得到flag

#coding=utf-8
import socket,threading
sl=1
while sl:
    try:
        level=open('.level').read()
        level=int(level)
    except:
        level=1
    class user():
        HP=int(100+(4*level))
        Danger=int(10+(3*level))
        Defence=int(5+(1*level))
    class npc():
        name='穿山甲'
        HP=(3**15)
        Danger=(3**10)
        Defence=100
    print('面板\t血量\t攻击力\t防御力\t\n'),
    print('玩家 %s\t%s\t%s\t\n'%(user.HP,user.Danger,user.Defence)),
    print('怪物 %s\t%s\t%s\t\n'%(npc.HP,npc.Danger,npc.Defence)),
    user.Danger=user.Danger-npc.Defence
    npc.Danger=npc.Danger-user.Defence
    if user.Danger <=0:
        user.Danger=1
    if npc.Danger <=0:
        npc.Danger=1
    print("开始战斗".center(41,'^'))
    while 1:
        npc.HP=npc.HP-user.Danger
        print('你对%s造成了%s 怪物剩余血量 %s\t\n'%(npc.name,user.Danger,npc.HP))
        user.HP=user.HP-npc.Danger
        print('%s对你造成了%s 你剩余血量 %s\t\n'%(npc.name,npc.Danger,user.HP))
        if npc.HP<=0 and user.HP<=0:
            print('平局!!!')
            break
        if npc.HP <=0:
            print('你赢了!!!,你剩余血量 %s\t\n'%(user.HP)),
            sl=0#自己加
            break
        if user.HP <=0:
            print('你死了!!!%s剩余血量 %s\t\n'%(npc.name,npc.HP)),
            break
    print(("战斗结束 等级+1 您目前等级%s"%(int(level)+1)).center(49,'^'))
    open('.level','w').write(str(level+1))

TLS

wireshark打开后,在首选项-rsa中添加server.key,在http中有flag

兔年大吉

打开md文件,key是社会主义加密,解密得到hint:rabbit
密文是带key的佛曰加密,解密得到H​​​​‏​‌​​​​‏‍​​​​​‏‍‌​​​​‏‍‌​​​​‏‍‌​​​​‌‏‏​​​​‏​‎2SfqTIxK19Np8HYvg3B3pmXmq5TEESY9J5u4SwHH9C4
内含零宽隐写,kali下vim查看有200B,C,D,E,F,使用网站解密得到enooo1g
得到的key还需进行rot13得到rabbb1t
根据hint进行rabbit解密得到md5(rr4bb1t)[:18]
md5加密括号内字符并取前18位得到flag

哎,就是玩

调整图片高度后放入stepsolve后得到TY4AsDnf0vZMSDy

剩下的只要正常玩就能出flag,当然不想玩反编译一也能找到flag

隐写3

修改宽高就可以得到flag

做个游戏

使用java 反编译工具Java Decompiler打开后就可以看到flag的base64加密形式

想蹭网先解开密码

已知电话号码前7位,创建一份字典,kali下爆破即可

aircrack-ng -w key.txt wifi.cap

zip伪加密

使用ZipCenOp.jar或学一下修改方式,解压后即可得到flag

三色绘恋

foremost分离图片得到压缩包,修改宽高得到密码,解压得到flag
 

只有黑棋的棋盘

把0506修改为0304,解压后打开

补全密码

JKLMNOPQRSTUVWXYZAB
IJKLMNOPQRSTUVWXYZA
HIJKLMNOPQRSTUVWXYZ
GHIJKLMNOPQRSTUVWXY
FGHIJKLMNOPQRSTUVWX
EFGHIJKLMNOPQRSTUVW
DEFGHIJKLMNOPQRSTUV
CDEFGHIJKLMNOPQRSTU
BCDEFGHIJKLMNOPQRST
ABCDEFGHIJKLMNOPQRS

对应棋盘得到密码GOODGOPLAY,解压后对图片修改宽高即可得到flag

蜘蛛侠

winrar打开提示搜索一下发现是中文古计数,又提示大写,找到对应中文解开压缩包
根据hint调试py代码得到file.jpg,01打开发现末尾不同

import os
data_jpg = open('file.jpg', 'wb')
def jpg_code():
    with open('key.jpg', 'rb') as handle:
        size = os.path.getsize('key.jpg')
        print(size)
        i = 0
        while i < size:
            bytedata = handle.read(1)
            process_data = data_code(bytedata)
            data_write(process_data)
            i += 1
def data_code(data):
    bytedata = int.from_bytes(data, byteorder="big")
    if bytedata % 2 == 0:
        bytedata = (bytedata + 1) ^ 128
    else:
        bytedata = (bytedata - 1) ^ 128
    data = bytes([bytedata])
    return data
def data_write(process_data):
    data_jpg.write(process_data)
if __name__ == '__main__':
    jpg_code()
    data_jpg.close()

解码得到提示silent eye,使用工具解开flag

baby_flag.txt

01打开txt文件发现是jpg文件改后缀,发现末尾有一串数字+小写字母

16进制解密再base解密后得到提示有压缩包

再次01打开文件后发现有rar头,52和72换位置后保存,打开需密码

修改图片高度得到密码

解压缩后里面是一个malbolge编码,在线解密后得到flag

善用工具

sapphire .jpg放入010后,尾部有一串编码

先uuencode再base85解码得到KEYisCamouflage

修改docx文档后缀为zip后解压,在document.xml中找到密码

解压real steg.zip得到csgo.riff,kali下使用stegpy csgo.riff即可得到flag

MuMuMisc的简单题

from email.mime import image
from PIL import Image
import binascii
import base64
def decode(path):
    image=Image.open(path)
    flag=''
    for x in range(5):
        for y in range(400):
            p=image.getpixel((x,y))
            if p == (0,0,0):
                flag+='1'
            elif p == (255,255,255):
                flag += '0'
    a=(hex(int(flag,2))[2:])
    b=(binascii.unhexlify(a))
    print(base64.b64decode(b))
if __name__=="__main__":
    path="mumumisc2.png"
    decode(path)
d={"0001":"i","001":"s","010":"a","100":"_","101":"m","0110":"g","0111":"u","00000":"l","00001":"h","1101":"d","1111":"o","11001":"{","11101":"n","110000":"c","110001":"f","111000":"}","111001":"e"}
p="110001 00000 010 0110 11001 101 0111 101 0111 101 0001 001 110000 100 0001 001 100 0110 1111 1111 1101 100 010 11101 1101 100 00001 010 11101 1101 001 1111 101 111001 111000"
l=p.split(" ")
flag=""
for i in l:
    flag+=d[i]
print(flag)

群友们的唠嗑

根据MiMA.txt得出123

使用FTK Image工具,把有用信息导出

另一个文件在Kali下

identify -format "%T " $R3PC85G.gif > out.txt

编写脚本把5,4修改为二进制,发现长度不够在开头补个0,得到passisWT@giF

s="5 5 5 4 4 4 4 4 5 5 4 4 4 4 5 4 5 5 5 4 4 5 5 4 5 5 5 4 4 5 5 4 5 5 4 5 4 4 5 4 5 5 5 4 4 5 5 4 5 4 5 4 5 5 5 4 5 4 5 4 5 4 4 4 5 4 4 4 4 4 4 4 5 5 4 4 5 5 5 4 5 5 4 5 4 4 5 4 5 4 4 4 5 5 4".split()
flag = "0"
for i in s:
    if i == "5":
        flag += "1"
    else:
        flag += "0"
for i in range(len(flag)//8):
    print(chr(int(flag[i*8:(i+1)*8],2)),end="")

解压出encode.png因为原图的像素被放置到了错误的宽度上,写脚本还原后得到flag

from PIL import Image
img = Image.open('encode.png')
w, h = img.size
def de(width):
    height = w * h // width + 1
    new = Image.new('RGB', (width, height))
    for i in range(w * h):
        new.putpixel((i % width, i // width), img.getpixel((i % w, i // w)))
    new.show()
    new.save("flag.png")
de(727)

where is flag 2

#将每个txt文件crc提出
key = '6275676B757B596F755F63616E27745F696D6167696E655F7468655F68617070696E6573735F6F665F686964696E675F7468655F666C61672121217D'
flag=''
for i in range(0,len(key),2):
    hex_str = key[i:i+2]
    int_str = int('0x'+hex_str,16)
    int_str = int_str % 128
    flag += chr(int_str)
print(flag)

美丽的烟火

zip为伪加密,修改09为00
解压后得到password,txt,base64+base58+栅栏得到th1s_1s_passwd
01打开firework拉到末尾得到提示stegpy:shumu
kali下zsteg firework.png输入密码shumu得到aZgs8ImPpQOzO3CVA/wIUVq/M7X8C33ptNZSW2Blenc=
AES在线解密得到flag

黑客的照片

kali下使用zsteg hacker.png发现lag{m1s和隐藏的zip
foremost分离后其中一个压缩包解开后的txt内是rsa加密,脚本破解后得到passwd:I_1ove_mumuz1!

from Crypto.Util.number import long_to_bytes
import gmpy2
e = 65537
p = 164350308907712452504716893470938822086802561377251841485619431897833167640001783092159677313093192408910634151587217774530424780799210606788423235161145718338446278412594875577030585348241677399115351594884341730030967775904826577379710370821510596437921027155767780096652437826492144775541221209701657278949
q = 107494571486621948612091613779149137205875732174969005765729543731117585892506950289230919634697561179755186311617524660328836580868616958686987611614233013077705519528946490721065002342868403557070176752015767206263130391554820965931893485236727415230333736176351392882266005356897538286240946151616799180309
c = 17210571768112859512606763871602432030258009922654088989566328727381190849684513475124813364778051200650944085160387368205190094114248470795550466411940889923383014246698624524757431163133844451910049804985359021655893564081185136250014784383020061202277758202995568045817822133418748737332056585115499621035958182697568687907469775302076271824469564025505064692884524991123703791933906950170434627603154363327534790335960055199999942362152676240079134224911013272873561710522794163680938311720454325197279589918653386378743004464088071552860606302378595024909242096524840681786769068680666093033640022862042786586612
n=p*q
phi_n=(p-1)*(q-1)
d=gmpy2.invert(e,phi_n)
m = pow(c, d, n)
print(long_to_bytes(m))


解压第二个压缩包得到flag2和3
2修改宽高得到3_1s_eas3_bu1_mi3进行stegpy得到sc_d0n't_love_me}拼接得到flag
 

miko不会jvav啊

解压压缩包后,在kali下strings TnT.pcapng > d.txt生成字典

使用Accent RAR Password Recovery软件字典破解压缩包密码Latifa-Fleuranza

使用Cheat Engine打开进程TnT.exe,点任意地址右键浏览相关内存区域即可看到flag

粉色的猫

根据DNA图转换压缩包备注得到解压密码CATISSOCUTE

Key.txt内容为PDU编码,使用在线网站逐行解码保存到txt

010导入后保存为png图片,图片是npiet,用Photoshop反相图片,使用npiet工具

再用010看1,发现是bpg文件,改后缀后用工具导出为png

联想题目猫,想到猫脸变换,使用脚本爆破得到flag图片

import matplotlib.pyplot as plt
import cv2
import numpy as np
from PIL import Image
it = cv2.imread('out.png')
def arnold_decode(image, shuffle_times, a, b):
    a=13
    b=14
    decode_image = np.zeros(shape=image.shape)
    h, w = image.shape[0], image.shape[1]
    N = h
    for time in range(shuffle_times):
        for ori_x in range(h):
            for ori_y in range(w):
                new_x = ((a * b + 1) * ori_x + (-b) * ori_y) % N
                new_y = ((-a) * ori_x + ori_y) % N
                decode_image[new_x, new_y, :] = image[ori_x, ori_y, :]
    cv2.imwrite('flag.png', decode_image, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
    return decode_image
arnold_decode(it, 1, 121, 144)

Happy ZQ

解压后先看crack!.zip,里面有两个txt且长度为6,使用crc32爆破

分别得到_pass_,_word_,解压后得到另一个压缩包密码

解压另一个压缩包,passwd是snow隐写

使用工具SNOW.EXE -C passwd.txt得到压缩包密码Mid-Autumn_Festiva解压后得到flag

KISSKISS

根据猜猜图片颜色转换二进制得到kiss密码Pdx_kiss_kiss

使用watermark对kiss.jpg进行解密,得到密码:KISS_kiss??????

旅行的奥秘

根据提示解密,密码是map

foremost分离png图片,得到二维码,扫码

根据提示解密得到key{wow!yougotit!},解压风神.zip压缩包得到flag

粗心的佳佳

foremost分离password.png得zip

修复后扫码得到zip的base加密密码,解压,根据题目编写脚本破解得到flag

from gmpy2 import invert
K = 1074
S = 43
inv = invert(S, K)
def unpack(num):
    A = [175, 87, 44, 21, 11, 5, 3, 1]
    res = ''
    for i in range(8):
        if num >= A[i]:
            res = res + '1'
            num -= A[i]
        else:
            res = res + '0'
    return int(res, 2)
C = [1817, 3100, 2240, 868, 172, 1816, 2025, 50, 172, 2289, 1642, 2067, 1337, 1681, 655, 2588, 691, 2591, 1595, 1552, 2498, 1513, 609, 1075, 602, 1420, 2720, 1042, 947, 2160, 731]
tmp = []
for i in C:
    tmp += [unpack(i * inv % K)]
for i in range(1, len(tmp)):
    print(chr(tmp[i] ^ C[i-1] % 256), end = '')

南城旧梦

010打开bmp文件,拿出来rot47得到stoolkeyisqeadzc

使用S-tool打开输入密码解密得到key.txt得到压缩包密码

(Docx文件解密看不懂,暴力破解密码后猜测是四个五)

倾听.txt是SNOW隐写,使用工具

把所有符号拼接,使用Accent RAR Password Recovery暴力破解得到密码%ee.

Kali下运行

一切有为法如梦幻泡影

解压后暴力破解<<察>>密码为42,用StegSolve打开one.png

找到<<探>>的密码,用Autacity打开Tow.mp3,多视图

看到<<末>>的密码,010打开Three.jpg

末尾base64解密得到flag,彩弹暴力破解密码2765

where is flag 3

#直接7z解压,查看时间,在线转换时间戳得到1621556112 1621556119 1621556100 1621556105 1621556115 1621556065 1621556108 1621556116 1621556050 1621556050 1621556056 1621556055 1621556049 1621556050 1621556051 1621556048 1621556052 1621556051
#末尾的不同觉得是Ascll进行解码得到密码解压缩得到flag图
a="112119100105115065108116050050056055049050051048052051"
s=""
p=""
for i in range(0,len(a),3):
    s=a[i:i+3]
    p=p+chr(int(s))
print(p)

random color

foremost分离图片,用stegslove比较分离出的两张图拿到一张二维码,扫码拿到flag

答案

foremost分离图片得到zip,图片备注佛曰解密,解密后备注就是密码
根据password提示找到青花歌词对应得到压缩包密码:三匆爱温蒙惚心信承失记愈的逢过濡善着记回寞神梦
解压后里面jpg用010打开,结尾base64解密后拿到flag

做题要细心-1

010打开gif发现还有一个缺头的gif,提取出来补头

Photoshop打开两个gif,发现在提取出的gif的一个图层中有隐藏信息fd6349c6e635a1d0

进行md5解密得到bugku

010打开两个gif文件,发现在如图处有隐藏二进制,进行拼接01001110011011100110001000110111001101110101111101100010011101010100011101111101解码得到Nnb77_buG}

Kali下使用exiftool看到隐藏base加密信息e0F4X1M=解码得到{Ax_S,拼接所有信息得到flag

图片里的中文

压缩包注释信息里的密文rot47解密得到Add 5D honey to me

给密文MD5加密一下得到压缩包密码e950c89788db4042193830f49d273512

对password.txt进行base58解码得到iEeWwc2oGX/DzzdaM1/tdvaWGRodocuXoPMJpAUYMaI=

png是神剧《让子弹飞》里的名场面,台词为是杀人还要诛心?,使用在线网站解密即可得到flag
 

Linux2

010打开后查找KEY就能找到flag

细心的大象

foremost分离,看备注base16解密得rar密码,解压后的图片修改宽高得到flag

爆照

使用foremost分离得到压缩包

解压后,01看各个图,改后缀,88中有二维码,888图片备注中有base64隐藏,8888中隐藏zip文件

根据题目格式拼接即可得到flag

猫片(安恒)

根据提示LSB BGR解出二维码的图
扫描后下载flag.rar文件,解压后通过提示NTFS得到pyc
在线反编译后,自己编译代码后得到flag

def decode():
    ciphertext = ['96','65','93','123','91','97','22','93','70','102','94','132','46','112','64','97','88','80','82','137','90','109','99','112']
    ciphertext.reverse()
    flag = ''
    for i in range(len(ciphertext)):
        if i % 2 == 0:
            s = int(ciphertext[i]) - 10
        else:
            s = int(ciphertext[i]) + 10
        s=chr(i^s)
        flag += s
    return flag
def main():
    flag = decode()
    print(flag)
if __name__ == '__main__':
    main()

多彩

用stegsolve打开

savebin保存为zip,用7z打开压缩包发现需要密码

根据图片中YSL提示找到网站对应色号的color值

每11位分组111011001111101 101101101100110 101101110110110

转字符得到密码白学家,解压缩得到flag

旋转跳跃

用MP3Stego解密即可

普通的二维码

文件尾有隐藏,8进制转ascii即可得到flag

乌云邀请码

lsb隐写解密即可得到flag

神秘的文件

使用ARCHPR明文爆破,解压后改docx文件后缀为zip,解压后里面就有flag

论剑

winhex打开改宽高

发现,解二进制得得到mynameiskey!!!hhh

又看到38 7B BC AF 27 1C 而7z的压缩包文件头为37 7A BC AF 27 1C

修改后保存为7z,解压密码位刚刚的二进制解码,打开后又是图片,修改宽高

对应得flag,再进行base16解密得最终flag

Photo的自我修养

解压后,002图片修改宽高得到B:One2021@
001.zip用01打开修改504B开始第67位为00 14,7z提取文件
010打开图片找到A:Just,拼接解压keyAB得到flag

爱因斯坦yyds

010打开图片结尾有7z压缩提取出来
修改图片宽高得到7z密码bugku666
解压后得到密码.txt,base64解密后得到提示
2个罗马独裁者指挥着一队编号为abcd的基因突变的罗马独裁者来抓老马,攻翻了6个有护栏的城墙,然后他们顺利的抓到了老马。并得到一串字符:oemsoxepdjy
先进行凯撒解密为2再进行维尼吉亚解密密钥为abcd再栅栏解密栏数为6得到mimabubnukg猜测密码后为bugkunb
解压得到flag.txt,根据图片提示DES_password:E=MC²,解密flag.txt内字符串后得到flag

隐秘的角落

#图片四角各有隐藏的颜色块,导出后发现G通道都在0-127,故进行导出,解密后得到flag
from PIL import Image
import base64
im = Image.open('file.png')
x=y=""
for i in range(16):
    print(chr(im.getpixel((i, 0))[1]),end="")
for i in range(16):
    a = im.getpixel((im.size[0]-1-i,0))
    x += chr(a[1])
print(x[::-1],end="")
for i in range(16):
    print(chr(im.getpixel((i,im.size[1]-1))[1]),end="")
for i in range(16):
    b = im.getpixel((im.size[0]-1-i,im.size[1]-1))
    y += chr(b[1])
print(y[::-1])
f="TVpXR0NaMzNLUlVHUzQyN05GWlY2WUs3TzVYVzRaREZPSlRISzNDN09CWEdPN0k9"
print(base64.b32decode(base64.b64decode(f)))

超简单隐写

直接解压得到两张图片,是盲水印隐写,工具解密得到passwd.txt的密码,
解压出来打开后逐行进行base64解密,看到Steganography is the art and science of writing hidden messages in such a way that no one

import base64
f=open("passwd.txt","r")
line=""
w=open("out.txt","w")
for i in range(100):
    line=f.readline()
    if line=="":
        break
    w.write(str(base64.b64decode(line))[2:-1])
    print(base64.b64decode(line))
f.close()
w.close()

说明是base64隐写,脚本爆破后得到flag.txt的密码,解压后得到flag

import base64
def get_diff(s1, s2):
    base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    res = 0
    for i in range(len(s2)):
        if s1[i] != s2[i]:
            return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
    return res
def b64_stego_decode():
    file = open("passwd.txt","rb")
    x = ''
    lines =  file.readlines()
    for line in lines:
        l = str(line, encoding = "utf-8")
        stego = l.replace('\n','')
        #print(stego)
        realtext = base64.b64decode(l)
        #print(realtext)
        realtext = str(base64.b64encode(realtext),encoding = "utf-8")
        #print(realtext)
        diff = get_diff(stego, realtext)  
        if diff:
            x += bin(diff)[2:].zfill(n*2)
        else:
            x += '0' * n*2           
    i = 0
    flag = ''
    while i < len(x):
        if int(x[i:i+8],2):
            flag += chr(int(x[i:i+8],2))
        i += 8
    print(flag)
if __name__ == '__main__':
    b64_stego_decode()

这个flag,就是逊啦

查看password.txt,hint2为空,010editor 打开可发现隐藏字符,使用零宽解密得:HZK16
密文为10行,每行16个数字,且每个数字在0xFFFF范围内,可将其转为两字节,则每行正好能组成16*16的点阵

lines= [[1024,1024,1024,1056,65520,1056,1056,1056,1056,1056,2080,2080,4130,4130,8222,49152],
[4160,4160,8772,32638,17028,17156,16900,17028,32356,16932,16900,16900,16900,32260,16936,16],
[1024,1024,1024,1056,65520,1056,1056,1056,1056,1056,2080,2080,4130,4130,8222,49152],
[128,16512,12416,4360,508,520,2128,4160,8256,57408,8352,8352,8464,8712,9230,10244],
[1024,768,256,4,65534,1024,1040,2040,1040,1040,1040,2064,2064,4112,8352,16448],
[4160,5192,16124,18720,1296,256,16376,256,65534,64,80,16376,2112,1088,320,128],
[16,16376,256,256,256,260,65534,256,256,256,256,256,256,256,1280,512],
[512,512,2032,2080,6208,9600,640,3200,29180,520,3088,4640,8640,256,3584,28672],
[256,256,256,2336,2320,4364,4356,8464,16656,288,320,128,256,512,3072,28672],
[0,0,2032,6168,12300,14348,56,224,192,128,0,0,384,960,384,0]]
from PIL import Image
img = Image.new('RGB', (16, 16))
def hzk16(nums):
    for y in range(len(nums)):
        b= bin(nums[y])[2:].rjust(16,'0')
        for x in range(len(b)):
            color= (0,0,0) if b[x]=="1" else (255,255,255)
            img.putpixel((x,y), color)
    img.show()
for line in lines:
    hzk16(line)

使用decode.py画图,得:九的九次方等于多少?得387420489
使用密码解压flag.rar,得到三个文件:
can you see me 未知文件
before.gif尾部 IJUW4YLSPE====== base32 Binary
after.gif尾部 cmV2ZXJzZQ== base64 reverse
使用脚本将文件进行二进制翻转,010editor查看为png文件,Stegsolve可看到flag。

f= open('can you see me','rb')
bs= f.read()
l=[x^0xff for x in bs]
f= open('out','wb')
f.write(bytes(l))

ez_misc

压缩包修改头为52617121,解压后看c.txt是个jpg文件,改一下后缀,再通过01更改高度得到b压缩包的密码
b打开后得到二维码扫后base64解密得到GIF89a(提示c里面图片是gif),flag.docx里有隐藏文字,修改设置就可以看到,是c压缩包密码
c解压缩后修改图片文件头为474946383961,flag就在第二帧

不可以破译的密码

依次进行以下脚本即可得到flag

lt = [['P', 'Q', 'L', 'N', 'E', 'Y', 'O', 'D', 'H', 'R', 'J', 'M', 'B', 'K', 'C', 'T', 'F', 'U', 'A', 'Z', 'S', 'X', 'I', 'W', 'V', 'G'],
['H', 'R', 'V', 'K', 'E', 'I', 'Y', 'B', 'J', 'G', 'M', 'Q', 'P', 'C', 'X', 'D', 'F', 'N', 'Z', 'T', 'U', 'O', 'L', 'A', 'W', 'S'],
['S', 'N', 'U', 'K', 'R', 'T', 'P', 'B', 'O', 'E', 'X', 'G', 'A', 'V', 'Z', 'Q', 'D', 'J', 'H', 'W', 'C', 'Y', 'I', 'M', 'L', 'F'],
['J', 'T', 'K', 'Q', 'V', 'F', 'L', 'X', 'D', 'Z', 'W', 'U', 'O', 'A', 'M', 'I', 'E', 'B', 'Y', 'G', 'P', 'R', 'S', 'H', 'C', 'N'],
['J', 'Z', 'B', 'L', 'E', 'P', 'K', 'G', 'N', 'O', 'A', 'C', 'R', 'U', 'I', 'S', 'D', 'M', 'F', 'V', 'X', 'H', 'Q', 'T', 'W', 'Y']]
d = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
x = 0
f = open('cipher_text.txt','r')
f1 = open('out.txt','w')
for i in f.read():
    if i.isalpha():
        ls = lt[x]
        ind = ls.index(i)
        flag = d[ind]
        f1.write(flag)
        x = (x + 1) % 5
    else:
        f1.write(i)
f.close()
f1.close()
a = ['2miMR_', '5tnsxt', 'EiAfA8', 'U4YYYg', 'Uytd4o', 'VE0Kvk', 'WEqzmr', 'Yk0Z80', 'ZWtuz4', 'fZ6p89', 'it6avb', 'jHrN4f', 'kimoF3', 'ompnGP', 'wJBCVw', 'z44aEu', 'zXGLA1']
b = ['Bu2vU1', 'GqnFOK', 'JB5Y1A', 'NgvHYn', 'Og7yBw', 'PEM6xo', 'YSU8nJ', 'nhEqbk', 'qVpbYg', 'us3s1H', 'wO6mhU', 'wSy1iA']
c = ['1OFImu', '3sCW4h', 'CO2Rdh', 'DJz0OW', 'DV5lNC', 'Iens0I', 'KYkmiT', 'N1Dpwj', 'XTDP7K', 'ZhANnV', 'eYGdn_', 'geBz7B', 'kVXTRQ', 'lO_jxz', 'oREUS2', 'sqjyCv', 'zgrwUS']
d = ['9pJQTY', 'CG9e94', 'CfguPx', 'G_k89C', 'Li9two', 'MixElv', 'RWMVWz', 'dpSrAV', 'qEdPG7', 'rD13mk', 'uAyQFT', 'w0QrrA']
e = ['33r8sz', '7GSHwI', '9HLxKG', 'BBo1Uk', 'DGfbeM', 'F6NAQX', 'H9QqmV', 'JHyRYC', 'KH8cBZ', 'UvLAbO', 'cQRetc', 'h6bHVS', 'jGJkbF', 'u4RE4B']
f = open('password.txt','w')
for i in a:
    for j in b:
        for l in c:
            for m in d:
                for n in e:
                    s = i+j+l+m+n
                    f.write(s)
                    f.write('\n')
f.close()
import base64
f = open('flag.txt','r')
s = f.read()
while 1:
    try:
        s = base64.b32decode(s)
    except:
        try:
            s = base64.b16decode(s)
        except:
            try:
                s = base64.b64decode(s)
            except:
                print(s)
                break
f.close()

成果狗成果狗

010打开fl.jpg找到两段base64加密数据和1一个jpg文件

把两段数据解密后加在一个图片末尾得到flag

奇怪的png图片

foremost分离得到zip
根据提示crc32进行爆破,依次对pass123进行爆破得到Awsd2021mzy0
再根据图片真实crc32改图片crc32修改后进行宽高爆破得到二维码,扫描后提示pass4是crc32爆破过程中90开头的
拼接得到压缩包密码Awsd2021mzy09070yo
解压得到flag

开始也是结束

foremost分离图片得到压缩包
压缩包多次爆破发现密码都是压缩包内文件名,使用脚本爆破直到报错

import zipfile
import re
zipname = "C:\\Users\\wizar\\Downloads\\output\\zip\\00000082\\"+"11549.zip"
while True:
    if zipname != "":
        ts1 = zipfile.ZipFile(zipname)
        res = re.search('[0-9]*',ts1.namelist()[0])
        print(res.group()) 
        passwd = res.group()
        ts1.extractall("C:\\Users\\wizar\\Downloads\\output\\zip\\00000082\\",pwd=passwd.encode('ascii'))
        zipname = "C:\\Users\\wizar\\Downloads\\output\\zip\\00000082\\"+ts1.namelist()[0]
    else:
        print ("find")


打开最后报错前的压缩包,解压后得到bugku.zip
根据提示在kaili下fcrackzip -D -u -p rockyou.txt  bugku.zip得到密码letsgetition
解压后010打开,flag在文件末尾
 

知否

用stegsolve打开,在Red和Green通道的最低位发现左边有一块的宽度为80,高度为715的隐藏,
同时发现R通道和G通道的值基本是0或1,但是有少部分其他数字,结合原图中的“绿肥红瘦”是提示G通道取余后的值大于R通道取余后的值,这是一个条件,满足则值为1,不满足则值为0
使用脚本爆破,得到的txt导入010,保存为png看到flag

from PIL import Image
img = Image.open('file.png')
f=open("out.txt","w")
flag=""
for i in range(80):
    for j in range(715):
        x=img.getpixel((i,j))
        if x[0]%2 < x[1]%2:
            flag+="1"
        else:
            flag+="0"
        if len(flag)==8:
            s=hex(int(flag,2))[2:].zfill(2)
            f.write(s)
            flag=""
f.close()

闹酒狂欢

import binascii
S='EF81B5EF81B3EF81A9EF81AEEF81A7EF80A0EF8193EF81B9EF81B3EF81B4EF81A5EF81ADEF80BB0A0AEF81AEEF81A1EF81ADEF81A5EF81B3EF81B0EF81A1EF81A3EF81A5EF80A0EF8183EF81AFEF81AEEF81B3EF81AFEF81ACEF81A5EF8181EF81B0EF81B0EF80B10AEF81BB0AEF80A0EF80A0EF80A0EF80A0EF81A3EF81ACEF81A1EF81B3EF81B3EF80A0EF8190EF81B2EF81AFEF81A7EF81B2EF81A1EF81AD0AEF80A0EF80A0EF80A0EF80A0EF81BB0AEF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF81B3EF81B4EF81A1EF81B4EF81A9EF81A3EF80A0EF81B6EF81AFEF81A9EF81A4EF80A0EF818DEF81A1EF81A9EF81AEEF80A8EF81B3EF81B4EF81B2EF81A9EF81AEEF81A7EF819BEF819DEF80A0EF81A1EF81B2EF81A7EF81B3EF80A90AEF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF81BB0AEF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF8183EF81AFEF81AEEF81B3EF81AFEF81ACEF81A5EF80AEEF8197EF81B2EF81A9EF81B4EF81A5EF818CEF81A9EF81AEEF81A5EF80A8EF80A2EF8182EF81B5EF81A7EF81ABEF81B5EF81BBEF8197EF80B0EF81B2EF81A4EF819FEF80B1EF81B3EF819FEF81B4EF81A8EF81A5EF819FEF81A2EF81A5EF80B5EF81B4EF819FEF8189EF8184EF8185EF81BDEF80A1EF80A2EF80A9EF80BB0A0AEF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF80A0EF81BD0AEF80A0EF80A0EF80A0EF80A0EF81BD0AEF81BD'
def hex_to_str(s):
	s=binascii.unhexlify(s)
	print(s.decode('utf-8'))
ss=hex_to_str(S)

hex解码后放入QQ或者微信输入框,得到flag

北有楠木

010打开图片,中间发现压缩包文件,但要按照zip的格式把部分7z修改为504B,改好后解压
得到key.png和hint.txt,hint.txt使用base64解密得到古老的密码,百度搜索得到甲骨文图片,逐一比对得到压缩包密码14582978
解压缩后得到bmp文件使用wbs43open得到文件,搜索key关键词得到密码988%^&*cool
再次解压得到AES加密,kali下enc -d -aes256 -in fla@g.txt -out 1.txt输入密码得到音符加密内容
使用在线网站,先无密码解密第二行得到cool,再用得到的密码解密第一行得到flag
 

泡菜

010打开图片尾有bpg文件提取出来后用bpgview.exe查看得到压缩包密码QQ@93388
解压后的图片内容是Mary Stuart Code对照得到压缩包密码MUMUZINBTQL
继续解压后得到key文件,放入网站运行得到密码MUMUZIYYDS!@#
解压后得到txt是python的序列化文件,使用脚本,重复的1558876699就是flag

import pickle
f=open("fl.txt","rb")
result=pickle.load(f)
f.close()
f1=open("out.txt","w")
f1.write(str(result))
f1.close()

Licking dog diary

stegsolve打开图片lsb隐写save bin,010打开文件发现eif,去除前面部分(保留EIF前面空格),删除中间英语提示需要删除的地方,保存
kali下./文件名,得到↕↱↕↕↔↙↕↙↔↓↕→↕→↔↗↔↘↕↺↕↲↔↗↔↕↔↗↔↕↔↗↔↕=
使用在线网站,得到keyisbbwxnlwuwuwu
解压压缩包,文用notepade打开,查看所有字符,中间有箭头部分替换成01得到

01101011
01100101
01111001
00110001
00111010
01101101
01101101
01111010
01110111
01101100
01110000

转换得到key1:mmzwlp
在码-public-index.php中看到MDclub,搜索后发现同样文件,下载后使用beyond compare比较,得到Key2MMzwbb
两个key想加就是压缩包密码
解压后010打开,改后缀为rar,压缩包打开看提示使用Accent RAR Password Recovery爆破得到密码QAQ%#!
解压后010打开flag,改后缀为jpg得到的图片内中文转拼音就是flag

低位的色彩

虎符

解压wim得到左右两个文件
先看左,hint内容当铺密码,解出来是65 68 68转Acill后拼在一起,即压缩包密码ADD656868
解压后txt上面一行是unicode,解码得到ctf.ssleye,指的是http://www.hiencode.com/keyword.html网站,结合提示中的注意关键字,指的就是这个网站里的关键字密码
因为这里是左半部分,所以秘钥是left解密得到一部分flag:HUFU_LEFT&
右文件夹图片用tweakpng打开是需要Fireworks8软件打开另一个图层就是密码
解压后得到base64加密的右flag
左右拼接就是总的flag

出其不意

foremost分离,jpg的exif信息中有信息

对字符串进行一次base58加密就是压缩包的key

图片名提示画X的既不是黑也不是白,黑转1,百转0,有x段前面补0,解密即可得到flag

攻其不备

pdf打开删除两次图,得到提示base100和表情,对照得到压缩包mumuziyyds
直接爆破word的压缩包得到密码一个空格,word打开,把隐藏字符关闭,音符解码得到flag

流量里的二维码

#wireshark打开后看只有TTL有用tshark -r wireshark.pcap -Y "ip.src == 172.17.0.3" -T fields -e "ip.ttl" > 1.txt,把其先转换二进制再转换成二维码,扫描就是flag
from PIL import Image
f=open("1.txt","r")
MAX = 22  #图片边长
img = Image.new("RGB",(MAX,MAX))
str=""
for line in f.readlines():
    line=line.replace("\n","")
    str += bin(int(line))[2:].zfill(8)
str=str[:-4]
i = 0
for y in range (0,MAX):
    for x in range (0,MAX):
        if(str[i] == '1'):
            img.putpixel([x,y],(0, 0, 0))
        else:
            img.putpixel([x,y],(255,255,255))
        i = i+1
img.show()
img.save("flag.png")
#扫码即可得到flag

Steganography_concerto

使用010拉长第一个图片可以得到一半key

使用工具jsteg解密月亮图片即可得到第二段key

使用mp3stego对mp3进行解密密码为两段key拼接,解密后得到一个有零宽隐写的文本,使用在线网站解密即可得到flag

easypicture

foremost分离图片,根据压缩包提示,爆破得到密码0707
根据hint,kali下用zsteg得到密文rcPr04H36Qj+7vt9YFA2KbRyD0yEg+y7mTAQHC82CBM=
key.jpg是盲水印使用工具得到AES密码shumu,在线网站解密得到flag

简单的二维码

借用大佬的脚本进行修复,扫码即可得到flag

from PIL import Image
img = Image.open('file.png')
w, h = img.size
gc = lambda x, y: img.getpixel((x, y)) // 255
black, white, tmpb, tmpw = '', '', 0, 0
for y in range(h):
    for x in range(w):
        if gc(x, y):
            tmpw += 1
            if tmpb:
                black += str(tmpb % 2)
                tmpb = 0
        else:
            tmpb += 1
            if tmpw:
                white += str(tmpw % 2)
                tmpw = 0
for col in [black, white]:
    for i in range(0, len(col), 8):
        if int(col[i: i + 8], 2) > 127:
            break
        else:
            print(chr(int(col[i: i + 8], 2)), end='')
    print()

学不会jvav我哭辽

wireshark打开flag.pcapng搜mysql流最大那一个包最后有几串数字345 257 206 347 240 201 346 230 257 40 134 56 56 155 151 153 157 111 154 61 56 56 57
八进制转字符后得到压缩包密码\..mikoIl1../
解压缩后打开TnT,打开CE扫描字符串flag{右键点开地址浏览范围区域找到flag

图片里的英文

盲水印得到I LOV3 CHINA,但没有用处,作者直接给出第二步

有五张图片,结合题目描述,需要从中破解出压缩包的密码

这是游戏sifu里的东西,能认出其中有智和义,其实是把传统的仁义礼智信改成了人义尊智诚,这里的顺序是人尊智义诚,不过这五个字所有的排列组合都不是密码

题目描述是而且仇人拥有5种不同能力,你能破解他们吗

所以压缩包的密码是木火水金土,对应五个关卡反派的能力

解压之后有两张图片,用wbstego解密bmp出key:虾仁猪心

解压出flag.png,是疯狂动物城里的一幕,结合题目意思可以知道需要找出这张图对应的字幕
是You know you love me全换成小写,还得去掉空格,才是正确的密码kali下进行lsb带钥解密得到flag

python2 lsb.py extract flag.png out.txt youknowyouloveme

yst的小游戏

#这里利用碰撞脚本,来确定最少回合胜利数,再根据提示进行md5 32位加密,得出flag
#coding=utf-8
import os,threading
class user():
    HP=400
    MP=200
    Danger=30
    Defence=20
class HP():
    name_1='小瓶生命药水'
    HP_1=50
    name_2='大瓶生命药水'
    HP_2=100
    name_3='满血药水'
    HP_3=user.HP
class MP():
    name_1='小瓶魔法药水'
    MP_1=50
    name_2='大瓶魔法药水'
    MP_2=100
    name_3='满魔药水'
    MP_3=user.MP
class USE():
    name_1='普通攻击'
    MP_1=0
    Danger_1=user.Danger
    name_2='磨刀石'
    MP_2=10
    Danger_2=user.Danger*2
    name_3='鸡汤'
    MP_3=20
    Danger_3=user.Danger*3
    name_4='攻击强化'
    MP_4=50
print('开始游戏'.center(100,'*'))
print('玩家属性值\t生命值%s\t魔法值%s\t攻击力%s\t防御值%s\t'%(user.HP,user.MP,user.Danger,user.Defence))
level=129
class Boss():
    HP=300
    Danger=30
    Defence=20
    HP=HP+20*level
    MP=400
    Danger=Danger+3*level
    Defence=Defence+level*4
user.Danger=user.Danger-Boss.Defence
Boss.Danger=Boss.Danger-user.Defence
if user.Danger <=0:
    user.Danger=1
if Boss.Danger <=0:
    Boss.Danger=1
print('怪物属性值\t生命值%s\t魔法值%s\t攻击力%s\t防御值%s\t'%(Boss.HP,Boss.MP,Boss.Danger,Boss.Defence))
ran=0
while 1:
    ran=ran+1
    print('可用技能\t%s 攻击力%s\t%s 攻击力%s\t%s 攻击力%s\t%s 攻击力%s\t'%(USE.name_1,user.Danger,USE.name_2,user.Danger*2,USE.name_3,user.Danger*3,USE.name_4,user.Danger*2))
    print('可用药水\t%s 回复生命值%s\t%s 回复生命值%s\t%s 回复生命值%s\t\n\t\t%s 回复魔法值%s\t%s 回复魔法值%s\t%s 回复魔法值%s\t'%(HP.name_1,HP.HP_1,HP.name_2,HP.HP_2,HP.name_3,HP.HP_3,MP.name_1,MP.MP_1,MP.name_2,MP.MP_2,MP.name_3,MP.MP_3))
    if 0>=(user.HP-Boss.Danger):
        use=HP.name_3
    elif user.MP<50:
        use=MP.name_3
    elif Boss.HP<=user.Danger*3:
        use=USE.name_3
    else:
        use=USE.name_4
    if USE.name_1 in use:
        user.MP=user.MP-USE.MP_1
        if user.MP<USE.MP_1:
            print('魔力不足,自动使用普通攻击')
            Boss.HP=Boss.HP-user.Danger
            print('你使用了%s 对怪物造成了%s伤害'%(USE.name_1,user.Danger))
        else:
            user.MP=user.MP-USE.MP_1
            print('你使用了%s 对怪物造成了%s伤害'%(USE.name_1,user.Danger))
            Boss.HP=Boss.HP-user.Danger
    elif USE.name_2 in use:
        if user.MP<USE.MP_2:
            print('魔力不足,自动使用普通攻击')
            Boss.HP=Boss.HP-user.Danger
            print('你使用了%s 对怪物造成了%s伤害'%(USE.name_1,user.Danger))
        else:
            user.MP=user.MP-USE.MP_2
            print('你使用了%s 对怪物造成了%s伤害'%(USE.name_2,user.Danger*2))
            Boss.HP=Boss.HP-user.Danger*2
    elif USE.name_3 in use:
        if user.MP<USE.MP_3:
            print('魔力不足,自动使用普通攻击')
            Boss.HP=Boss.HP-user.Danger
            print('你使用了%s 对怪物造成了%s伤害'%(USE.name_1,user.Danger))
        else:
            user.MP=user.MP-USE.MP_3
            print('你使用了%s 对怪物造成了%s伤害'%(USE.name_3,user.Danger*3))
            Boss.HP=Boss.HP-user.Danger*3
    elif USE.name_4 in use:
        if user.MP<USE.MP_4:
            print('魔力不足,自动使用普通攻击')
            Boss.HP=Boss.HP-user.Danger
            print('你使用了%s 对怪物造成了%s伤害'%(USE.name_1,user.Danger))
        else:
            user.MP=user.MP-USE.MP_4
            user.Danger=user.Danger*2
            print('你使用了%s 对怪物造成了%s伤害'%(USE.name_4,user.Danger))
            Boss.HP=Boss.HP-user.Danger
    elif HP.name_1 in use:
        user.HP=user.HP+HP.HP_1
        print('你使用了%s 恢复了%s生命值'%(HP.name_1,HP.HP_1))
    elif HP.name_2 in use:
        user.HP=user.HP+HP.HP_2
        print('你使用了%s 恢复了%s生命值'%(HP.name_2,HP.HP_2))
    elif HP.name_3 in use:
        user.HP=user.HP+HP.HP_3
        print('你使用了%s 恢复了%s生命值'%(HP.name_3,HP.HP_3))
    elif MP.name_1 in use:
        user.MP=user.MP+MP.MP_1
        print('你使用了%s 恢复了%s魔力值'%(MP.name_1,MP.MP_1))
    elif MP.name_2 in use:
        user.MP=user.MP+MP.MP_2
        print('你使用了%s 恢复了%s魔力值'%(MP.name_2,MP.MP_2))
    elif MP.name_3 in use:
        user.MP=user.MP+MP.MP_3
        print('你使用了%s 恢复了%s魔力值'%(MP.name_3,MP.MP_3))
    else:
        print('没有该道具 自动使用普通攻击')
        print('你使用了%s 对怪物造成了%s伤害'%(USE.name_1,user.Danger))
        Boss.HP=Boss.HP-user.Danger
    user.HP=user.HP-Boss.Danger
    print('怪物对你造成了%s伤害'%(Boss.Danger))
    print('玩家\t剩余生命值%s\t攻击力%s\t\t防御力%s\t魔法值%s'%(user.HP,user.Danger,user.Defence,user.MP))
    print('怪物\t剩余生命值%s\t攻击力%s\t防御力%s\t\n'%(Boss.HP,Boss.Danger,Boss.Defence))
    print('第%s回合,结束!!!'%ran)
    if Boss.HP<=0 and user.HP<=0:
        print('平局!!!')
        break
    if Boss.HP <=0:
        print('你赢了!!!\t')
        break
    if user.HP <=0:
        print('你死了!!!\t')
        break

神秘的宴会

答案C6,所以消失的文本名为7e8b9f5cab4a8fe24fad9fe4b7452702.txt
1、zipfile record的文件头50 4B 03 04;
2、zipfile record末尾的被压缩文件名,从zip文件第31字节开始,7e8b9f5cab4a8fe24fad9fe4b7452702.txt;
3、zipfile endlocator的文件头,文件最后22字节的前8字节,50 4B 05 06 00 00 00 00。
创建key.txt并写入内容为7e8b9f5cab4a8fe24fad9fe4b7452702.txt,然后用bkcrack:

bkcrack -C flag.zip -c Themissingtextnameishere.zip -p plain.txt -o 30 -x 0 504b0304 -x 283 504b050600000000
bkcrack -C flag.zip -c Themissingtextnameishere.zip  -k e7ee1595 9752b53e 4c35945e -d 1.zip
bkcrack -C flag.zip -c 1.jpg -k e7ee1595 9752b53e 4c35945e -d 2.jpg

看看2.jpg,但这时候会发现它打不开,这是因为原压缩包里的1.jpg是用deflate算法压缩的,简单解压即可:

import zlib
data = open('2.jpg', 'rb').read()
data = zlib.decompress(data, -zlib.MAX_WBITS)
with open('1.jpg', 'wb') as f:
    f.write(data)

得到图片与开始图片一样,盲水印解密得到flag

Where is flag Plus

看看文件的crc32校验值,没有找到规律;但是发现文件的修改时间比较奇怪,而且只有秒数不一样,于是把所有文件解压到一个文件夹下,写个简单脚本分析可知,秒数分布为30-50,再结合文件个数为1936,正好能被8整除

import os
import time
flag = ''
out=''
for i in range(1936):
    path = r'dir\{}.txt'.format(str(i))
    file_time = os.path.getmtime(path)
    s = time.ctime(file_time)
    if int(s[17:19]) >= 40:
        flag += '1'
    else:
        flag += '0'
    if len(flag) == 8:
        out += hex(int('0b'+flag,2))[2:].zfill(2)
        flag = ''
f=open("out.txt","w")
f.write(out)

于是遍历文件的修改时间,如果秒数大于40,则记为1,否则即为0,再将得到的二进制转hex
保存为7z文件,得到snow.txt,看特征明显是snow加密,这里需要密码,得爆破,随便上网找个弱口令字典,运行完了ctrl+f查找flag就行

真正的爱情

下载压缩包得到:聊天记录.jpg和女朋友的表情包.jpg

女朋友的表情包使用foremost分离出一个zip文件,需要密码

再看聊天记录

 发现.有很多,猜测摩斯密码,把中文改成-

.-- .- -. -.. .-- -... -..- -.. .-- -.

解码得到压缩包密码wandwbxdwn

解压后是一个mp3文件,听声音像是以前座机拨号声音

使用Adobe Audition,打开后点视图-波形编辑器-显示频谱音高

 百度搜索座机拨号频率

 对应得到压缩包密码19865153975

解压后得到一个PPT,因为ppt像docx文件一样可以改为zip文件,改后缀为zip解压

在ppt-media发现两张图片,其中一张是非象形文字

对照图片得到压缩包密码wdxcyyyzyq

 解压后得到mp4文件,打开,发现视频右下角有字符

 逐帧看得到flag

我把文字藏到图片了

使用脚本得到flag前两段,第三段维尼吉亚解密即可

from PIL import Image
pic = Image.open('flag1.png')
a, b = pic.size
flag = ''
for y in range(b):
    for x in range(a):
        ff=pic.getpixel((x, y))      
        
        flag+=chr(ff)
print(flag)
from PIL import Image
pic = Image.open('flag2.png')
a, b = pic.size
flag = ''
for y in range(b):
    for x in range(a):
        ff=pic.getpixel((x, y))      
        if ff[2]==0:
            flag+=chr(ff[0])
print(flag)

不是Base编码

def rev(k,fence):
    fence = fence[::-1]
    flag = ''
    while fence:
        if k > 0:
            flag = fence[0]+flag
            fence = fence[1:]
            k *= -1
        else:
            flag += fence[0]
            fence = fence[1:]
            k *= -1
    return flag
s = '09e878204c173047e8a205a7856c00491f2404c446500032b733865e06'
fence = ''
for i in s:
    fence += bin(int(i,16))[2:].zfill(4)
fence = fence[:-1]

if len(fence)%2 == 1:
    k = 1
    xor_txt = rev(k,fence)
else:
    k = -1
    xor_txt = rev(k, fence)

key = 'quest'
fix_key = ''
for i in range(33):
    fix_key += '{:07b}'.format(ord(key[i % len(key)]))
flag = ''
for i in range(len(fix_key)):
    flag += str(int(fix_key[i])^int(xor_txt[i]))

b = ''
i = 0
j = 7
while j <= len(flag):
    a = '0' + flag[i:j]
    b += chr(int(a,2))
    i = j
    j += 7
print(b)

图穷匕见

文件尾16进制转换为hex后用gnuplot画图得到一个二维码,扫码即可得到flag

convert

二进制转换为十六进制后保存为rar文件,解压后里面有一张图片,图片属性中有base64加密的flag

听首音乐

Audacity打开就可以看到摩斯密码,解密即可得到flag
 

好多数值

from PIL import Image
f=open(r'1.txt','rb+')
img=Image.new('RGBA',(503,122))
lines=f.readlines()
flag=""
for i in range(503):
    for j in range(122):
        img.putpixel((i,j),tuple(eval(lines[i*122+j])))
img.show()
f.close()

很普通的数独(ISCCCTF)

拼接修复后可以得到二维码,对扫出的字符串Base64循环解密即可得到flag

PEN_AND_APPLE

用alternatestreamview可以直接提取出flag文件

color

stegsolve查看每个图片得到Make Me Tall,把所有图片调高得到二进制,二进制转字符得到flag

c1 = '11111111010111101111'
c2 = '11111011111110111111'
c3 = '00001100101010110001'
c4 = '01001010010000001101'
c5 = '11010011011101010111'
c6 = '10011011011010110110'
c7 = '00111001101101111101'
flag = '' 
for i in range(0,20):
    c = c1[i]+c2[i]+c3[i]+c4[i]+c5[i]+c6[i]+c7[i]
    flag += chr(int(c,2))
print (flag)

怀疑人生

爆破得到第一个压缩包密码password,解压后对txt内容进行base64解密和unicode解码得到flag{hacker,foremost分离图片,得到压缩包,解压后对txt内容进行okk解密和base58解密得到misc
QR直接扫描得到12580},拼接后就是flag

红绿灯

#红绿形成二进制,黄每八位断一次
from PIL import Image
import binascii
im=Image.open('Traffic_Light.gif')
savepath=('gif\\')
try:
    im.save(savepath+'yy{:d}.png'.format(im.tell()))
    while True:
        im.seek(im.tell()+1)
        im.save(savepath+'yy{:d}.png'.format(im.tell()))
except:
    pass

flag=""
for i in range(1168):
    image=Image.open(savepath+'yy'+str(i)+'.png')
    if image.getpixel((110,40))==(254, 0, 0, 255):
        flag+=str(1)
    elif image.getpixel((105,140))==(7, 253, 8, 255):
        flag+=str(0)
flag= hex(int(flag,2))[2:]
flag=bytes.fromhex(flag)
print(flag) 

不简单的压缩包

暴力破解压缩包密码为0,得到txt,提示密码有50位,
010打开原压缩包,去掉末尾504b0304以后的内容,用脚本创建50位重复字符的字典,
字典爆破得到压缩包密码为50个a,解压得到swf文件
使用JPEXS Free Flash Decomplier工具,flag的base64加密内容在脚本-DefineSprite(171)-frame1-DoAction里

一枝独秀

解压缩得到图片,打不开,查看头是zip,改后缀后爆破得到密码123456578
解压后找到与其他不同的一朵花,使用jphs05,密码就是备注里的flowers,文件保存为zip
打开后先佛曰解密,再栅栏4栏解密,再复制hint后面的字符串进行base64解密得到flag
 

小猪佩奇

lsb加密隐写,解密后改秘密文件后缀为png,扫码得到flag

好多压缩包

import zipfile
import string
import binascii
def CrackCrc(crc):
    for i in dic:
        for j in dic:
            for p in dic:
                for q in dic:
                    s = i + j + p + q
                    s=bytes(s,"UTF-8")
                    if crc == (binascii.crc32((s)) & 0xffffffff):
                        f.write(str(s)[2:-1])
                        return
def CrackZip():
    for I in range(68):
        file = 'out' + str(I) + '.zip'
        f = zipfile.ZipFile(file, 'r')
        GetCrc = f.getinfo('data.txt')
        crc = GetCrc.CRC
        CrackCrc(crc)
dic = string.ascii_letters + string.digits + '+/='
f = open('out1.txt', 'w')
CrackZip()
f.close()
#crc爆破得到的txt用notepad打开,base64deocode后,保存为文件,010打开后看到C43D7B00400700,是rar文件尾,补上头526172211A0700后改后缀为rar保存,打开后的备注就是flag

贝氏六十四卦

from PIL import Image
import base64
img = Image.open('1.png')#stegsolve找到lsb隐写,save bin后010打开后去掉前四位,保存为png
def check(x, y):
    p = img.getpixel((x, y))
    if p == 0:
        return '1'
    if p == 255:
        return '0'
res = ''
for y in range(8):
    for x in range(8):
        for l in range(6):
            res += check(6*x+2, 6*y+l)
res= hex(int(res,2))[2:]
res=bytes.fromhex(res)
flag=base64.b64decode(res)
print(flag)

有黑白棋的棋盘

对4easynum.zip爆破得到密码7760

根据题目描述,对照古精灵语密码进行解密得到棋盘的压缩包密码bugkupasswd

解压第二个压缩包对图片exif信息base58解码得到提示:不用去找密码表啦题目就是 ,白棋提了哪些黑棋呢,对照得到第三个压缩包密码goodctfer

解压后修改宽高得到flag

插画

根据题目提示的工具Free_File_Camouflage和密码:我都没听说过,得到pl.txt,复制其中

length q rmdir and print chr oct hex ord uc q stat s and print chr ord qw q m q and print chr ord qw q x q and print chr ord q chr uc and print chr oct hex ord uc q lt eval and print chr oct oct ord uc qw q m q and print chr ord q stat s and print chr oct oct ord uc qw q m q and print chr ord q map m and print chr oct ord q mkdir m and print chr ord uc qw q flock q and print chr oct oct oct ord q open do and print chr ord uc q qx q and print chr length q x rename sethostent srand pack pipe setpwent syscall else eq split sleep endservent qw require symlink ne keys ord require x and print chr ord uc qw q for q and print chr length q q splice srand getservbyname setnetent ne reset endprotoent foreach scalar rewinddir cos setnetent not else getprotobyname q and print chr ord uc q exp le and print chr hex ord q m alarm and print chr ord uc qw q y q and print chr ord qw q x q and print chr ord uc q my m and print chr ord uc q qw eq and print chr ord q oct do and print chr oct oct oct ord q mkdir m and print chr ord qw q fork q and print chr ord uc q eq ne and print chr oct oct ord q eq le and print chr oct oct ord q eq le 

保存为txt,kali下cat 1.txt | perl得到ZmxhZ3t3aGF0XzFzX2YxYWc/fQ==,base64解密得到flag
 

悲伤的故事

解压后看压缩包备注,百度搜得到:比悲伤更悲伤的故事
解压后继续打开压缩包,文件名是qq,搜完后看空间,得到信息7月21日,根据格式改为7yue21ri即是压缩包密码
解压打开exe,根据歌曲名输入83721得到flag或使用反编译工具pyinstxtractor,编译后查看pyc文件看到flag

请叫我艺术家

图片npiet.exe -q 1.png得到Bugku{2021_Bye_
蝌蚪密码解密2022_Welcome}
拼接就是flag

扭转乾坤

lsb隐写,savebin保存,txt打开有逆504B,删除后面的内容,把字符串倒转,010导入后保存为zip报存
解压后得到的二维码有缺失,对比bugku{和}生成的二维码进行ps修改,最后扫码得到flag
 

简单套娃plus

stegsolve打开图片lsb隐写savebin保存,直接foremost分离得到图片后,对图片进行binwalk分离
1735c得到一张bmp,再ntfs扫描得到另一张,脚本进行对比,对得到的文件再进行binwalk解压得到4.png
010打开图片末尾有7z的块,手动提取得到flag

复眼

提取拼接得到flag(跟拼拼图一样)

小美的秘密

解压后看后花园,foremost分离图片,根据备注修改玫瑰花的高,得到一串字符,根据原图提示fence进行栅栏解密是11栏得到小美家压缩包密码
客厅里的垃圾桶有两个文件,都是头错误的jpg图片,改好后拼接得到储物间压缩包密码
储物间001里的图片用010打开,把文件尾的rar文件提出来,解压得到二维码,扫码得到roomkey,002用音频软件打开,末尾有摩斯密码,得到另一半密码0721,拼接就是卧室压缩包密码
卧室日记1,3文件内和日记2exif信息部分拼接得到U2FsdGVkX18qyg4WuEtWtfFwxKvgUnUdax/b4f2dLgl30Tqg4Q/TOhaucaZpwqP/jQz3BAf/2IkCxIBDNBz94A==
花盆是个伪加密,解压得到图片,修改图片高得到信息AES和密钥misc,工具解密得到flag

聊天

foremost分离,在rar下发现一个压缩包内有flag,在jpg下发现有密码,但很模糊,使用vol进行取证
kali下python2 vol.py -f win7.vmem --profile=Win7SP1x64 filescan | grep "jpg"
结合提示python2 vol.py -f win7.vmem --profile=Win7SP1x64 dumpfiles -Q 0x0000000027e7a300 -D ./
保存后得到密码Q1Da1A1qINgDeT0KeI1
解压后得到bugku{s1mple_D1gital_f0rens1cs_%s_%s_%s}(qqnumber,qqname,wechatpicxorvalue(HEX,lowercase))
作者QQ54297198,加bugku官方群可以知道他的信息

蜜雪冰城~

根据图片备注编写脚本得到提示silenteye和其密码.解密得到

音频用Audacity打开,末尾有摩斯密码

使用MP3stego工具,解密得到的文本内有flag

beautiful_sky

压缩包密码就是压缩包名字ea改au
解压后图片尾有doc文件提出来,密码就在图片里,把字符改为可复制后,全部复制先base58再base64得到zip
zip密码根据作者提示KZDTCMCUNMYXGUTKLJMGCMKKKBMVIQLXMVLFM5DDI5YE4YL2KZ4FM3CSJ5KDEVTTMEZWQVKXJBBEOVKGIU4VAUJ5HU======
是base64和32还有Acill转字符
解压后txt内容有零宽隐写,在线解密得到flag

奇怪的压缩包

解压得到三张图片

对下图进行SilentEye解密,把解密程度改成best

Stegsolve打开下图,在蓝通道下发现二维码,QR识别

使用JPH05打开最后一张图片,密码在exif中

对得到的三段字符串以zip的格式进行排序组合,hex后保存为zip文件

用ARCHPR进行爆破得到456789是flag2的密码,得到

猜测flag1是123456得到

拼接得到flag{Bugku-is-an-excellent-CTF-,大小跟flag4相同

Kali下进行明文爆破,APCHPR也可以,但时间远大于用bkcrack,且因为加密方式问题需要删除flag2和3

把所得到的密钥输入进APCHPR中,用密钥进行解密(点击图中红圈处)

无视报错,用7Z提取被decrypted的zip文件,打开得到flag

皇家马德里

key.zip是伪加密,修改后打开,010打开jpg,是摩斯密码--.. .. .--. -.-. .-. -.-- .--. - ---解密后,改大小得到falg压缩包密码ZIPCRYPTO
解压后,010打开密码.jpg,末尾有base加密是92和91,解压后得到lsbjiami,根据密码图片提示lsb隐写,使用脚本工具解密得到的文件底部就是flag

一个普通的压缩包(xp0intCTF)

文件头修复,74(代表后面有文件)的位置被改为7A,改好后解压得到png,
图层分离,分别用stegsolve查看得到两个半个的二维码,拼接+ps扫码得到flag

QAQ

010打开发现py等关键词,改后缀为pyc,反编译工具反编译后再根据其进行decrypt
根据得到的提示搜索下载工具后,运行得到flag

妹子的陌陌  

foremost分离得到一个rar,密码是图片里的喜欢我吗.,内有摩斯密码,解密出的网站不能用,看

http://c.bugku.com/U2FsdGVkX18tl8Yi7FaGiv6jK1SBxKD30eYb52onYe0=

AES Key:@#@#¥%……¥¥%%……&¥

解密得momoj2j.png,输入http://c.bugku.com/momoj2j.png,得到二维码,反相后扫码得到flag

baby_misc

改文件头>foremost分离>盲水印>rsa>base64隐写+w型4栏栅栏解密>得到flag

canyoufindme

wireshark打开,导出http,把exp.php和source.php都保存,source.php中含有作者给的好康的图
exp.php中有一个ant里包含377A开头的字符串,hex后保存为7z压缩包,根据hint解出flag1.txt
先hex解码,再栅栏2栏得到正常的摩斯密码,解密得到12178898312110685857472116877310577102731058383487867102481051047781666161
十进制转换为ASCLL:yNYSyjUUJHtWIiMfIiSS0NCf0ihMQB==
base64换表解密得到flag

七七的礼物

爆破压缩包,密码为12138

解压后得到的txt,用notepad打开,前面是AES

U2FsdGVkX18u6OnfJX4aN+WIGr0LYz+f/QLFBcnyg3fkMiR8b7h3aTE5hAApQACX+31robBGjUPD+qz0Mz8xqg==

往下翻14#AbbQ%C是解压出的压缩包密钥

解压后是真理的游戏3和5的像素一样,ps一下得到lived

图片foremost,得到1k多个压缩包,拿出图片碎片后去除空白图片,剩下300碎片,拼成12x25的图后,用gaps自动修复得到scumbagtree.拼接得到AES密钥,解密得到网址

输入网址打开加密七得到

替换嗷为.,呜为-进行摩斯解密得到

进入网址后,保存生日照片的图片,SlientEye得到前半段Alz26加密的flag

扫描图片中二维码得到后半段Quoted-printable加密的flag,分别解密拼接得到

小美的秘密part2

解压后,根据图片备注编写脚本爆破公司资料得到foremost分离图片得到的压缩包密码
图片名称是个工具,使用此工具得到password.txt,是brainfuck编码,但缺少15个*补上后得到ImKey
thekey.txt里是一段盲文,使用密码解密报错,说明有零宽隐写,在线网站解密后得密钥bugku233_
再次解密得到flag

OSINT

作者提供了时间还有一张带有飞机号的图片,去在线网站查找该飞机那天的飞行记录,对照地形图即可找出答案

pyjin1

blacklist = ["/","0","1","2","3","4","5","6","7","8","9","setattr","compile","globals","os","import","_","breakpoint","exit","lambda","eval","exec","read","print","open","'","=",'"',"x","builtins","clear"]
print("="*25)
print(open(__file__).read())
print("="*25)
print("Welcome to the jail!")
print("="*25)
for i in range(2):
        x = input('Enter command: ')
        for c in blacklist:
                if c in x:
                        print("Blacklisted word found! Exiting!")
                        exit(0)
        exec(x)
del blacklist[:]
print(open("flag.txt").read())

就五层你能解开吗

使用crc32攻击取有用的字符拼接得到_CRC32_i5_n0t_s4f3
脚本跑后搜索关键词找到vigenere cipher funny

from pycipher import Vigenere
w=open('pwd.txt','w')
f=open('ciphertext.txt').read()
for i in open("keys.txt"):
    i=i.replace('\n','')
    flag=Vigenere(i).decipher(f)
    key=flag+'\r\n'
    w.write(key)
w.close()


百度搜找到同样md5值的程序,跑了之后输出的Goodbye World :-(就是密码,查看文件md5,cmd>certutil -hashfile 文件名  MD5
脚本进行sha1碰撞,测试I7~5-s4F3?是密码
rsa维娜攻击得到flag
 

简单套娃DX

解压后得到8080文件,010打开发现是png文件,但存在各种各样的问题,这里借用八神师傅的脚本进行修复

import os
out = 'output' #存放修复后的文件的文件夹
if not os.path.exists(out):
    os.makedirs(out)
for i in os.listdir('./XD'):    #文件夹名字
    file = open('./XD/'+i, 'rb').read()
    if file[1:4] != b'PNG': #文件头缺失
        file = int(0x89504E470D0A1A0A).to_bytes(8, 'big') + file
    elif file[8:16] == b'\x00\x00\x00\x00\x00\x00\x00\x00': #IHDR块的长度位和标记位替换为00
        file = file[:8] + int(0x0000000D49484452).to_bytes(8, 'big') + file[16:]
    elif file[33:37] == b'\x00\x00\x00\x00' and file[37:41] == b'IDAT': #IDAT块的长度被改为0
        len_idat = file.index(b'eXIf') - 49
        file = file[:33] + int(len_idat).to_bytes(4, 'big') + file[37:]
    elif file[12:16] != b'IHDR': #IHDR块位置错误
        file = file[:8] + file[-37:-12] + file[8:-37] + file[-12:]
    elif file[16:24] != b'\x00\x00\x00\x05\x00\x00\x00\x05': #图片宽高被修改
        file = file[:16] + int(0x0000000500000005).to_bytes(8, 'big') + file[24:]
    elif file[1:4] == b'PNG' and file[12:16] == b'IHDR' and file[37:41] != b'IDAT': #IDAT块标记位被删除
        file = file[:37] + b'IDAT' + file[37:]
    elif file[1:4] == b'PNG' and file[12:16] == b'IHDR' and file[25] != b'\x00':  # Color type被修改
        file = file[:25] + b'\x00' + file[26:]
    f = open('./output/' + i +'.png', 'wb')
    f.write(file)
    f.close()

通过在线网站

查询到图片信息,发现IDD0中存在图片坐标信息

​​

在010里打开,根据值对应的位置编写代码查看其最大值和最小值

import os
max_x=0
max_y=0
for i in os.listdir('./output'):
    f = open('./output/'+i, 'rb').read().hex()
    x = int(f[-64:-56], 16)
    y = int(f[-48:-40], 16)
    if max_x<x:
        max_x=x
    if max_y<y:
        max_y=y
print(max_x,max_y)
#449 19

根据位置关系编写代码拼接

import os
from PIL import Image
img = Image.new('RGB',(450*5,20*5),(255,255,255))
for i in os.listdir('./output'): 
    f = open('./output/'+i, 'rb').read().hex()
    x = int(f[-64:-56], 16)
    y = int(f[-48:-40], 16)
    x = x*5
    y = y*5
    i = Image.open('./output/'+i)
    img.paste(i,(x,y,x+5,y+5))
img.save('flag.png')

​​

欢乐牛年

打开压缩包

​​

按照字母表位置,小写字母>数字 数字>大写字母得到压缩包密码25T1613LI3A

wireshark打开流量包,在usbhid.data发现鼠标流量

​​

kali下运行

tshark -r secret.pcapng -T fields -e usbhid.data>out.txt

对鼠标流量进行爆破,得到坐标文件

nums = []
w=open("out1.txt","w")
posx = 0
posy = 0
for line in open("out.txt","r").readlines():
    if line[0]!="0":
        continue
    if len(line) != 13:
         continue
    x = int(line[4:6],16)
    y = int(line[6:8],16)
    if x > 127 :
        x -= 256
    if y > 130 :
        y -= 265
    posx += x
    posy += y
    btn_flag = int(line[2:4],16)
    if btn_flag == 1:
        w.write(str(posx)+" "+str(posy)+"\n")

使用工具gnuplot进行以下操作后再反转图片得到压缩包密码

​​

解压缩后,010打开txt文件发现是零宽隐写,使用在线网站解密(只有这个网站解的是正确的)

​​

base62解密得到password:happyoxday

解压后得到一个图片,foremost分离得到密码表,根据提示要下如下位置

​​

对照密码本得到密码htpchbar

解压后二维码是Aztec Code,使用在线网站扫码得到flag

花点流量听听歌

用010打开发现末尾有hint

​​

用Adobe Audition打开,发现hint:Beaufort Cipher

​​

对图片foremost分离得到压缩包解压得到三个文件

脚本提取流量中的信息得到

thk<DEL>epe<DEL>asy<DEL>swoi<DEL>rds<DEL>notu<DEL>hes<DEL>reb<DEL>?6<DEL>

output :thepasswordnothere?

 根据文本给的:当然,并不是所以失去的,都是值得珍惜的,最后失去的往往并不令人回味。

<DEL>是失去拼接得到keyisusb6最后删除最后一位6得到keyisusb

根据以上提示使用在线网站解密得到另一个压缩包密码,解压得到flag

 Improve yourself

 crc32爆破,选择有用的关键词拼接得压缩包密码bugku_youareprettygood

使用在线网站写入再点击单步演化,数格子得到密码012369849

解压后得到的图片尾部是base64转换图片后得到

补全修复后扫码得a1s2d3f4g5,解压flag.exe得到flag

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值