文章目录
MISC
http://www.bmzclub.cn/challenges
解密
0x01 签到题
关注公众号:白帽子社区,回复关键字:BMZCTF 获取flag
0x02 2018 HEBTUCTF 签到题
下载压缩包。是个名为zip的文件,没有后缀名。用010editor
打开,看下文件头部:
发现是个压缩包,添加后缀.zip
,然后用winrar打开。
发现又是一个无后缀文件,解压出来,再用010editor
打开
疑似是个jpg文件,再看下文件尾部:
可以得到flag
0x03 2018 HEBTUCTF 你可能需要一个wireshark
下载附件,是个流量包文件,用wireshark打开:
追踪TCP流,发现是个DVWA的练习流量包。
逐个流查看,在第17个流发现上传了一个flag.txt文件。文件内容是一串加密内容。
观察密文,看到有大小写字母,数字和“=”,初步判断为base64加密,使用在线解密尝试,再url解码,得到flag。
2018 护网杯 迟来的签到题
下载附件,解压后是一个文本,里面是一串密文:AAoHAR1TIiIkUFUjUFQgVyInVSVQJVFRUSNRX1YgXiJSVyJQVRs=
,初步判断是base64密文,用base64解密后是一串乱码:
查看压缩包内题目提示:easy xor???
可以判断是要异或后才能得到flag。写python脚本
import base64
str1 = 'AAoHAR1TIiIkUFUjUFQgVyInVSVQJVFRUSNRX1YgXiJSVyJQVRs='
str2 = base64.b64decode(str1)
for i in range(200):
tmp=''
for j in str2:
tmp += chr(j^i)
print (tmp)
运行后,可以得到flag
Traffic_Light
下载是一张图片
对图片进行分解
得到1688张图片
观察图片,
1、发现第2的倍数的图片都是没有灯亮的。忽略不计。
2、绿灯和红灯总和为8或8的倍数时,下一张一定是黄色。
由此可以推断为二进制。绿为1
,红为0
。
写脚本进行编码:
# -*-coding: utf-8 -*-
from PIL import Image
binstr = ""
flag = ""
def decode(s):
return ''.join([chr(i) for i in [int(b, 2) for b in s.split(' ')]])
for i in range(1168):
image=Image.open(r'./202011/'+str(i)+'.jpg')
# print (image.getpixel((115,55)))#输出颜色值
# print (image.getpixel((115,145)))
tmp1 = image.getpixel((115,55))
tmp2 = image.getpixel((115,150))
# print (type(tmp1))
if(tmp1[0] > 250):
binstr += '1'
elif(tmp2[1] > 250):
binstr += '0'
else:
binstr += ''
print (binstr)
for i in range(len(binstr)):
if i%8==0:
flag +=decode(binstr[i:i+8])
print(flag)
得到flag
0110011001101100011000010110011101111011010100000110110000110011001101000111001100110011010111110111000000110100011110010101111100110100011101000111010000110011011011100111010000110001001100000110111001011111011101000011000001011111011101000111001000110100011001100110011000110001011000110101111101110011001101000110011000110011011101000111100101011111011101110110100000110011011011100101111101111001001100000111010101011111001101000111001000110011010111110011000001110101011101000111001100110001011001000011001101111101
flag{Pl34s3_p4y_4tt3nt10n_t0_tr4ff1c_s4f3ty_wh3n_y0u_4r3_0uts1d3}
Fix it
下载后是一张二维码图片,但只有一个黑框
使用photoshop进行修补,并识别:
得到flag:flag{easyQRcode}
真正的CTFer
下载附件为一张图片
修改高度:
可以看到下面还有一张图片
将图片放大可以看到flag:
仔细看能看到flag
flag{d2b5543c2f8aa8229057872dd85ce5a9}
解不开的秘密
下载后是一个压缩包,里有一个file文件,和一个flag.docx文本
用文本工具打开file文件,里面有许多数字和少许的英文。怀疑是十六进制
放入010editor中
看到最后有个"=",怀疑是base64。用base64解码:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\RealVNC]
[HKEY_CURRENT_USER\Software\RealVNC\vnclicensewiz]
"_AnlClientId"="8f5cc378-2e1d-4670-80e0-d2d81d882561"
"_AnlSelected"="0"
"_AnlInclRate"="0.0025"
[HKEY_CURRENT_USER\Software\RealVNC\vncserver]
[HKEY_CURRENT_USER\Software\RealVNC\VNCViewer4]
"dummy"=""
[HKEY_CURRENT_USER\Software\RealVNC\VNCViewer4\MRU]
"00"="127.0.0.1"
"Order"=hex:00,01
"01"="127.0.0.1:5900"
[HKEY_CURRENT_USER\Software\RealVNC\WinVNC4]
"Password"=hex:37,5e,be,86,70,b3,c6,f3
"SecurityTypes"="VncAuth"
"ReverseSecurityTypes"="None"
"QueryConnect"=dword:00000000
"PortNumber"=dword:0000170c
"LocalHost"=dword:00000000
"IdleTimeout"=dword:00000e10
"HTTPPortNumber"=dword:000016a8
"Hosts"="+,"
"AcceptKeyEvents"=dword:00000001
"AcceptPointerEvents"=dword:00000001
"AcceptCutText"=dword:00000001
"SendCutText"=dword:00000001
"DisableLocalInputs"=dword:00000000
"DisconnectClients"=dword:00000001
"AlwaysShared"=dword:00000000
"NeverShared"=dword:00000000
"DisconnectAction"="None"
"RemoveWallpaper"=dword:00000000
"RemovePattern"=dword:00000000
"DisableEffects"=dword:00000000
"UseHooks"=dword:00000001
"PollConsoleWindows"=dword:00000001
"CompareFB"=dword:00000001
"Protocol3.3"=dword:00000000
"dummy"=""
可以看到中间位置有"Password"=hex:37,5e,be,86,70,b3,c6,f3
开头[HKEY_CURRENT_USER\Software\RealVNC\vncserver]
中有RealVNC。于是用Vccx4.exe
进行破解:
得到密码:!QAZ2wsx
用密码打开flag.docx,将图片移开,并全选修改字体颜色,可以看到flag
memory
下载附件后,用volatility
进行分析
题目是“分析内存镜像,破解管理员的登录密码,flag为明文密码的MD5值”
我们分析镜像中的hash值:
得到密文:
Administrator 500 0182bd0bd4444bf867cd839bf040d93b c22b315c040ae6e0efee3518d830362b
Guest 501 aad3b435b51404eeaad3b435b51404ee 31d6cfe0d16ae931b73c59d7e0c089c0
HelpAssistant 1000 132893a93031a4d2c70b0ba3fd87654a fe572c566816ef495f84fdca382fd8bb
进行修改将中间的" “改为”:"
Administrator:500:0182bd0bd4444bf867cd839bf040d93b:c22b315c040ae6e0efee3518d830362b
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
HelpAssistant:1000:132893a93031a4d2c70b0ba3fd87654a fe572c566816ef495f84fdca382fd8bb
存为文件,再用john进行爆破
可以得到密码123456789
再md5加密,就是flag:
但提交错误,可能是题目的问题。
赢战2019
下载附件,为一张图片
binwalk进行分析:
分解出两张图片
对二维码扫描:
无有用信息。
再对二维码图片进行分析:
可以在左下角看到flag
flag{You_ARE_SOsmart}
要写全。不是{}内的。。。。
2020sdnisc-CTF的起源
下载附件为一个文本
看到每一行后面基本都有==
怀疑是base64隐写。用脚本解密:
def get_base64_diff_value(s1, s2):
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
res = 0
for i in xrange(len(s2)):
if s1[i] != s2[i]:
return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
return res
def solve_stego():
with open('flag.txt', 'rb') as f:
file_lines = f.readlines()
bin_str = ''
for line in file_lines:
steg_line = line.replace('\n', '')
norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n', '')
diff = get_base64_diff_value(steg_line, norm_line)
print diff
pads_num = steg_line.count('=')
if diff:
bin_str += bin(diff)[2:].zfill(pads_num * 2)
else:
bin_str += '0' * pads_num * 2
print goflag(bin_str)
def goflag(bin_str):
res_str = ''
for i in xrange(0, len(bin_str), 8):
res_str += chr(int(bin_str[i:i + 8], 2))
return res_str
if __name__ == '__main__':
solve_stego()
可以得到flag
补全大括号即可
2020sdnisc-简单的js
下载附件是一个js文件
打开:
是一段代码。给了算法过程和结果。只要逆运算就可以。
写脚本:
s='19131e18041b1d4c47191d19194f1949481a481a1d4c1c461b4d484b191b4e474f1e4b1d4c02'
flag=''
for i in range(0,len(s),2):
tmp = int(s[i:i+2],16)
#print (tmp)
flag+=chr((255-128)-tmp)
print (flag)
得到flag:flag{db38fbff0f67e7eb3c9d274fd180a4b3}
2020sdnisc-损坏的流量包
下载附件,是一个流量包,但wireshark打不开。
用010editor打开。
在文件的结尾发现压缩包,提取出来,并保存为zip文件。打开
是一个base64加密,解密后,就是flag:flag{sdnisc_net_sQ2X3Q9x}
2020sdnisc-过去和现在
下载附件,是一张图片,用binwalk分析:
得到若干文件,逐一打开。
在21154中发现flag
2020sdnisc-左上角的秘密
下载附件,是一个文件和一个脚本。打开脚本:
是一段代码,对图片内容进行了加密,得到附件中的文件。写脚本进行逆运算:
flag_dec = open("flag.png","wb")
def file_decode(flag):
i = 1
while True:
byte_str = flag.read(1)
if (byte_str == b''):
exit()
byte_str = hex_decode(byte_str)
file_write(flag_dec, byte_str)
# print(byte_str, end="")
i = i + 1
def hex_decode(byte_str):
tmp = int.from_bytes(byte_str, byteorder="big")
tmp = tmp ^ 128
if (tmp % 2 == 0):
tmp = tmp + 1
else:
tmp = tmp - 1
tmp = bytes([tmp])
return tmp
def file_write(flag_dec, byte_str):
flag_dec.write(byte_str)
if __name__ == '__main__':
with open("./flag_enc.hex", "rb") as flag:
file_decode(flag)
flag_dec.close()
还原出图片
发现图片左上有条线。查看颜色:
猜测秘密在绿色中
使用脚本得到密文:
from PIL import Image
image =Image.open('flag.png')
c=0
aa=''
for i in range(120):
aa+=chr(image.getpixel((c,c))[-2])
c+=1
print (aa)
发现其中秘密:
ZmxhZ3tjNmU0Yzk5YTYzODhjNWQyYTlhZTZlZjZhODQzY2VhNn0=
Base64解密后得到flag:
flag{c6e4c99a6388c5d2a9ae6ef6a843cea6}
泰湖杯-MISC
下载附件,是一个压缩包,里面是一个文件和一个压缩包。
尝试各种方法无果后,将附件中的fun.zip删除。
再修复压缩包,可以发现密码没有了。
打开后,是一段密文
改后缀。并打开:
发现多出现段文字:
测试各种密码,发现希尔密码能解新发现的两句话:
得到一句新的字符串:
love and peaceee
用这句话做密码,使用rabbit解密剩余的一大段话:
得到:
LR2TMNLCGBOHKNDGGVRFY5JWGZTDAXDVMZTDCYK4OU4GCZRYLR2TSNTCHBOHKNJUMM4VY5JVGBSTOXDVHE3DIZC4OU2TIM3ELR2TQYLGHBOHKOJWGQYFY5JWGQ3DSXDVHE3GEOC4OU2TAZJXLR2TOZRTMROHKOBVME4VY5JVGRQTIXDVHAYDEOC4OU4GCZRYLR2TSNTCHBOHKNRRGY3VY5JVHA2WKXDVHAZDOMS4OU2WGMDBLR2TKNDDHFOHKODGMU3FY5JYMFSTMXDVG5QTOYK4OU3DENBQLR2TSNRUMROHKNRSGEYVY5JVMZTDKXDVHE3GEOC4OU3TSNJXLR2TQYLFGZOHKNLGMY2VY5JVGRRTSXDVHE3DIMC4OU2TMYRULR2TKNDDHFOHKNJWMM4VY5JUMZSWKXDVGU4TGN24OU4TMM3GLR2TMY3FGJOHKOBSG4ZFY5JYGM4GCXDVGVRGGMS4OU4GCZJWLR2TKOBVMVOHKNJUHEZFY5JYGM4GCXDVG43TGZK4OU3DEMJRLR2TKNDDHFOHKNRSGQYFY5JUMYYGMXDVHAYDKZK4OU4DKYJZLR2TSNTCHBOHKNRRGBSFY5JZGVRWIXDVGU2DGNS4OU3DENBQLR2TIZTFMVOHKNRWGJTFY5JYGI3TEXDVGY2DMOK4OU4GCMZWLR2TKNTCGROHKNJUMM4VY5JZHA2TQXDVGYYTAZC4OU2TIYZZLR2TKMZXGNOHKNDGMVSVY5JVGRRTSXDVG5QTOYK4OU4DOMLDLR2TSNRUGBOHKNJWMM4VY5JUMYYGMXDVGVTGMNK4OU2TIYZZLR2TMNBWHFOHKNJUMM4VY5JUMVQTMXDVHAZTQYK4OU2TIYZZLR2TONZTMVOHKNJUME2FY5JVHE4DEXDVHE4DKOC4OU2TSOBS
再进行base32的解密:
再Unicode解码:
再新佛曰解码:
得到一段话,用这然话解压fun.zip
得到音频文件。
再分析频谱,即可得flag
可乐加冰
下载附件,是一张图片:
用binwalk分析:
得到若干文件。
逐一查看,在2AE96文件中发现规律字符:
对其转为字符串:
s='834636363695438346369595364383469595954383469595364383463636363643834636363695438346369595364383469595364334453443834636953636438346369536954383463636953643834636369543344534438346369595438346369536954383463636363643834636363643344534438346369595364383463695953643834636369543834695363643344534438346363695364383463695369543834636369536438346369595954383469595364383469536954383463636363643834636953643834636369543834695369543834636959543834636369536'
print (s)
for i in range(0,len(s),2):
print (chr(int(s[i:i+2])),end='')
得到:
S.$$$_+S.$__$+S.___+S.__$+S.$$$$+S.$$$_+S.$__$+S.__$+"-"+S.$_$$+S.$_$_+S.$$_$+S.$$_+"-"+S.$__+S.$_$_+S.$$$$+S.$$$+"-"+S.$__$+S.$__$+S.$$_+S._$$+"-"+S.$$_$+S.$_$_+S.$$_$+S.$___+S.__$+S._$_+S.$$$$+S.$_$+S.$$_+S._$_+S.$__+S.$$_$
很像jjcode。将”S”替换为”$”
再加上固定的开关和结尾:
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+这里放密文+"\"")())();
再用jjcode解码:
既得flag
pcap
下载附件,是一个流量包。用wireshark打开:
并追踪tcp流:
可以看到其中一个流如下图:
可以看到flag。对流量观察规律:
发现含有flag信息的流长度都是91。按长度排序:
逐流进行拼接:
可以得到flag:
flag{d989e2b92ea671f5d30efb8956eab1427625c}
pcap_analysis
下载附件,为一个流量包。
用wireshark打开。并追踪tcp流
在其中一个流中发现如下图:
拼接得到flag: flag{323f986d429a689d3b96ad12dc5cbc701db0af55}
网鼎杯 2020 boom
下载附件,为一个exe文件,打开。
先是给了一段Md5码,在线进行爆破:
得到通关密码:en5oy
第二关是是一个三元一次方程
进行爆破:
for x in range(100):
for y in range (100):
for z in range(100):
if (3*x-y+z==185)&(2*x+3*y-z==321)&(x+y+z==173):
print (x,y,z)
得到解:
74
68
31
第三关是一个一元二次方程
一样爆破:
for x in range(1000000000):
if(x*x+x==7943722218936282):
print (x)
break
得到解:89127561
最后得到flag:flag{en5oy_746831_89127561}