打开后文件有2种数据流,HTTP和TCP,两个都追踪一下
这是TCP,好像没什么东西
再看看HTTP流;查看密码既可以随便打开一个HTTP流,也可以整个追踪,
得到用户名和密码(name和word),找个网站弄一下,得到flag
解压之后得到了一张奇怪的图片,用stegsolve和010查看后没什么不对的地方,
根据题目描述,刷新键既F5键能有什么神奇的作用吗?不是还有F5隐写吗?我去百度了一下,(28条消息) 【隐写术】F5隐写_m0_46296905的博客-CSDN博客_f5隐写
然后学习了一下F5工具如何使用。
在kali中失败了很多次之后,终于提取出了一个奇怪的txt文件
一个经验就是在kali中所有的文件夹命名不要用汉字,因为在终端里你无法输入汉字。
直接打开txt看不出什么东西,用010查看一下,应该是个zip文件。
修改文件后缀,解压一下,结果还有个伪加密
好办,修改一下deFlags
得到flag
用010看出了很多蹊跷,不仅有几个网站,还隐含着一个压缩包
用Kali分离一下,得到几个文件
解密后得到
这是什么意思呢?百度一下这个人名,查一下她的歌,
经过一个个地查词之后,找到了这个Anaconda的意思非常接近
然后我也不清楚该怎么做了,提交这个单词也不对,欸,不是还有一个文件嘛,借鉴一下他人的经验,解密一下,单词中的A不要大写,要改成小写。
下载二进制文件后得到flag,直接用010看,不用管文件格式
得到一个外形是excel但本质却是zip的文件,修改一下后缀,
看这个名字就知道不能把这个题想复杂了
解压zip文件后,在几个文件夹中翻一翻,不小心找到了flag,果然不能认真做。
解压之后得到一个txt和图片,提示flag是5个字符,
010检查图片发现有隐藏的压缩包,
但是Kali的binwalk分离后没有东西,这就奇怪了,flag藏在哪里呢?
但是当我换了foremost分离出来了,✌,foremost果然比binwalk好用
在output文件的docx文件中有一个二维码,扫描后得到flag,但是这个格式和txt里的也不一样啊,迷惑我
经过一番仔细查看,在这个FTP一条里看到了flag字符,追踪一下
另存为一个未知格式文件就行,用010看一下是个什么东西,
好像不行,会不会隐藏着什么文件呢?用Kali的foremost分离一下原来的流量文件(桌面的output文件必须为空,追踪流得到的东西提示我们flag在一个rar文件里头,而不是让我们分析得到的未知格式文件),
得到一个加密的rar
密码是什么格式呢?
用archpr暴力破解一下试试,多试几次总能试出来的
得到密码解压,得到flag
这个流量包有HTTP和TCP两种协议
这张图片里的信息我试了好几次也没找到,先借用一下网上的
这个应该就是压缩包的密码了,解密用foremost 分离出来的zip文件,
有一个加密txt,密码在哪呢?
图片没有什么密码信息,会不会是伪加密呢?一看,还真有
打开txt后,是一串符号和佛经,得到flag
给了一个不是zip的zip文件,文件头是png,修改后缀得到一个二维码图片,扫一下试试,
那flag应该藏在哪呢?
010查看得到的图片,在文件尾FFD9后面发现了一长长串奇怪的未知字符,
将这些16进制字符转换成ASCII码试试,(删去上面的,保留下面的,实在是太长了,不好复制),16進製到ASCII字符串在線轉換工具 - Coding.Tools
这些坐标代表什么呢?
查阅一下,又发现了kali上一个新的工具,gnuplot绘图工具绘制出图片,这个工具识别格式没有括号和逗号,给修改一下,用记事本里的替换,(复制文本中的括号和逗号,自己打出来的会找不到)
这个命令Kali竟然没有,又要自己安装了,去网上搜一下,结合这篇回答,得到一张二维码
(28条消息) gnuplot安装 - CSDN
扫描得到flag
题目描述和被偷走的文件差不多,
用foremost分离一下原文件,
得到一个rar并且有密码
暴力破解得到密码,解压得到flag
010看一下
binwalk分离得到几个文件(foremost没分离出来)
在这个encode.txt文件中看到了一串base64编码,转换后得到了某个压缩包的密码(我猜的),试了一下,是看看flag在不在里面这个压缩包的密码。
asdfghjkl1234567890
但是这个压缩包里没有什么东西,只有一张图片
还有一个doc文件,打开之后全是base64编码
解码之后还是一串base64编码,那就奇怪了
搜了一下,原来这是多次编码,人家用python脚本做的,我很菜,不会写脚本,那就借鉴一下吧
最后跑出来了这个
comEON_YOuAreSOSoS0great
解压后得到一个音频,应该是摩斯密码吧
写完以后得到这个
– — .-. … . … … …- . .-. -.-- …- . .-. -.-- . .- … -.–
去转换一下,
这个应该是flag吧,试一下,正确。
flag{morseisveryveryeasy}
暴力破解一下
解压
这张图片还挺好看
010瞅一瞅
得到flag,藏得好隐蔽
flag{Wadf_123}
这是个啥
这种情况还是第一次遇见,去查了一下,修改宽高应该就可以,宽是第二行的2,3列,高是第二行的6,7列
尝试多次后,得到一个模糊的flag,貌似是5个6
这种方法实在是很麻烦,不如去搜一个脚本试试看。(虽然他说有错误,但是能跑出来就行)
得到一张图片,好神奇,这个flag多清晰啊,前面那个方法太low了
得到一个篮球.gif和篮球副本.gif,010比较一下发现副本没有文件头,插入文件头后得到flag
flag{zhi-yin-you-are-beautiful}
嘿,这个flag不对哦,正确的应该把“-”换成“_",又是陷阱。。。
这个flag倒是和题目名称有点联系
很明显这是一个音频隐写题目,我们用audacity打开看一下频谱,注意空格,这么好听的一个曲子被加上了这个,太可惜了。。。我去听一下原版
废了半天劲写出来摩斯电码是这个样子的:…-. ----- …— ----. -… -… -… …-. … … .---- .---- …-- ----. . . -… . -… —… . …- … .- .---- --… … -… ----- --… —… -…
这个地方摩斯密码有两段,后面那段和前面的一部分是重复的,我试了一下没有后面这段才是对的
然后翻译一下得到了F029BD6F551139EEDEB8E45A175B0786,提交上去却不对,为什么呢?注意题目要求,flag是小写的:flag{f029bd6f551139eedeb8e45a175b0786}
可以用python干这件事,当然,也可以用C语言,自己转换容易出错
例如,用python大概是这么写的:
#encoding:UTF-8
msg = 'F029BD6F551139EEDEB8E45A175B0786'
print(msg.lower() )
而用C语言就比较麻烦啦,就不用了吧。
是一个无法打开的gif,那么他可能缺少了文件头啥的,先看看再说
这个样子试试行不行
果然可以打开了,用stegsolve打开,一共有4帧,连起来应该就是flag了吧:
Q1RGe3dhbmdfYmFvX3FpYW5nX2lzX3NhZH0=
瞅着个东西的样子应该不是flag,试了一下果然不是,那应该就是base64编码了
OK得到flag:flag{wang_bao_qiang_is_sad}
这个jpg没有文件头和文件尾,加上一个试试
加上好像也不行,
flag.txt里说猜flag在哪里,只有一张可爱的猫猫图片了,看一下有什么信息
这是个什么?难道是flag?不可能这么简单,而且这是汉字,排除,那这是用来干什么的呢?
在CTF那个工具网站里有核心价值观解码,那这个abc应该就是什么东西的密码了
CTF在线工具-在线核心价值观编码|核心价值观编码算法|Core Values Encoder (hiencode.com)
再回头观察一下题目,outguess,这是Kali上的一个工具,百度一下outguess的用法,Linux下安装和使用steghide、outguess - 简书 (jianshu.com)
把图片搞到kali上之后,利用上面揭秘出来的abc继续操作,得到一个flag.txt文件夹
注意图片在哪里就要在哪里打开终端
flag{gue33_Gu3Ss!2020}
这道题目貌似无法采用上一道题的方法了,那该怎么处理呢?
直接运行程序后,出来了这个:
然后打开这个1.txt,是这个:
这是啥?ntfs肯定不会是flag,百度一下
这个需要用notepad打开,
这是成功的页面,需要在notepad++安装路径文件夹中打开powershell,然后还要注意输入形式:.\notepad++ 1.txt:flag.txt
这行命令的意思参考上张图片,
然而,我也遇到了很多困难,例如,我不知道哪天把powershell的path变量给删了,导致出现了这个:
在path系统变量中添加:
C:\Windows\System32\WindowsPowerShell\v1.0;
就搞好了,
又例如,我打开powershell路径不太对,
困难重重啊,最后终于得到flag:flag{ddg_is_cute},OK
解压之后打开是一张图片,
这里面有什么玄机吗?
先用010看,在最后看到了这个:
按照之前的经验,试试这张图片里是否有其他文件,
欸,还真有。
不过这也太多文件夹了吧,我一个个的找太费劲了,并且,全都是空的!(不要问我怎么知道的)
然后我不死心,又用binwalk分离了一下:
得到了一个非空的压缩包!
但是还需要密码,
先看一下是不是伪加密,先复习一下伪加密判断方法:
啊,这好像是zip的。。。
rar伪加密判断方法在这里:
很明显,这个rar是加密的
并且,在最后还有这个
总感觉他在侮辱我,但我找不到证据。。。
不管了,先修改一下试试,
出错了,那应该不是伪加密,快改回去
只能用暴力破解了,一般来说,暴力破解的密码都比较简单
事实证明确实如此。
这是一个GIF文件,那应该用stegsolve吧
一共有360帧,在第310帧发现了flag
flag{do_you_know_where_is_the_flag}
但是为什么不对呢?
原来我忘记了stegsolve一帧保存下来的东西了。。。
保存下来后,调整一下通道,出来了一张二维码
OK,扫描得到flag.
flag{shanxiajingwu_won_the_game}
打开后是一个加密的表格文件,这还没遇到过这种题目,
先用010打开看看吧,先按最原始的方法查找一下flag,真棒,一找就找到了
这是个啥?
好像也没有什么东西,不是LSB隐写,也没有藏什么文件,那应该怎么处理呢?
再仔细观察一下图片,诶,这有点像频谱图啊,先写下来试试
.- .-… .–. … .- .-… .- -…
去翻译一下
还真有点东西,这应该就是flag了吧,试了一下,正确。
flag{alphalab}
开图雷击
010看一看,应该是藏着rar,这好办,
搞出来一个加密的文件,应该不是伪加密,暴力破解吧
打开之后是这样的
这个我好像在哪里看到过,找了一下,好像不一样,接下来该怎么办呢?
看了大佬们的wp才知道这题是要记字频统计,出这道题的,好厉害,
借鉴一下网上的脚本
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- =\{\}[]"
strings = open('E:\\常用\\日常MISC\\P2--BUU\\23wolaopo.jpg.extracted/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="")
运行出来这个:
得到flag{gaki_IsMyw1fe}
看样子应该又是一道图片隐写
010看着倒也还正常
但是备注有这个,好像是盲文
去翻译一下
⡇⡓⡄⡖⠂⠀⠂⠀⡋⡉⠔⠀⠔⡅⡯⡖⠔⠁⠔⡞⠔⡔⠔⡯⡽⠔⡕⠔⡕⠔⡕⠔⡕⠔⡕⡍=
flag{y 0 0 0u_f 1 1 1n d d d_M e e ee e e ee$e}
打开之后是一张二维码和一串base64字符
二维码应该是某个公众号吧,试试看
不对,应该用手机,是一个叫做“中南极光网安实验室”的公众号,
再看那一个txt文件,
I2luY2x1ZGU8aW9zdHJlYW0+Cg==
这似乎仍然是base64编码,再解一次
是一条语句,这是什么意思呢?发送到公众号试试,不过好像没反应。
那该怎么办呢?去百度了一下其他人的做法,原来,我方向错了,那些字符串并不是只有一个,他有好多个,不是直接解码,而是通过python脚本跑出来,但是这个hint指的公众号不是就没用了嘛。奇怪,
import base64
def get_base64_diff_value(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 solve_stego():
with open('ComeOn!.txt') 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','')
norm_line = line.replace('\n', '').encode('utf-8')
norm_line = base64.b64decode(norm_line).decode('utf-8')
norm_line = base64.b64encode(norm_line.encode('utf-8')).decode('utf-8')
norm_line = norm_line.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 range(0, len(bin_str), 8):
res_str += chr(int(bin_str[i:i + 8], 2))
return res_str
if __name__ == '__main__':
solve_stego()
txt文件一定要与脚本文件在同一目录下,一些小错误自己可以尝试根据提示修改。
flag{6aseb4_f33!}
密码txt什么都没有,并且显示密码是编码,010看一下
010一共有12种常见编码,比较常用的是这几种
多试几次,在EBCDIC这个编码方式下看到了一些可读字符
wllm_is_the_best_team!
解压出来是一些小人图,有意思
这些小人代表什么呢?查了一查,原来是一种密码
(2条消息) CTF密码学常见加解密总结_攀登-CSDN博客_ctf密码学
翻译一下,就是 iloveholmesandwllm
flag{iloveholmesandwllm}
是一个txt文件
这可真巧,刚在上一道题的一篇文章里看到过这种密码,找个网站搞一下
[脑筋急转弯/哎呀!模糊处理/编码 splitbrain.org]
flag{welcome to CTF}
又是一个txt文件,我还以为是流量分析题呢
这个开头很熟悉啊,
原来是RAR的文件头,弄到010里看看
果然是rar文件
另存为一个文件看看,好像不行,那就换个方法,借个脚本吧
import binascii
hex_data='这里填十六进制数据'
out=open('res.rar','wb')
out.write(binascii.unhexlify(hex_data))
out.close()
搞出来一个加密的rar,破解一下密码
好不容易打开后,又说这个图片有问题
原来是少了个文件头与文件尾不对应
那应该改哪个?都试试
似乎不行,那就改成jpg
注意,要把原来png的文件头89504E47全部替换或删除,并且把文件后缀改成jpg
修改之后,图片正常打开
flag{57cd4cfd4e07505b98048ca106132125}
和上一道题目差不多的套路,文件头顺序颠倒了
改一下,解压打开,是一个word文档
啊这,都是套路,还是用010看吧
这个开头的PK不太正常吧,可能是个zip
修改后缀后解压,在word中的document.xml中发现了一串音符,
解密后得到
文本加密为音乐符号,可自设密码|文本在线加密解密工具 (qqxiuzi.cn)
flag{thEse_n0tes_ArE_am@zing~}
010打开后,提示
CRC校验码错误,那应该是宽高被修改了吧
修改之后就看到了
flag{1ts_vEryyyyyy_ez!}
得到两个加密zip,flag3和flag2
flag3
flag2
一下就出来了
flag2的密码不知道是不是也是这个格式,先试一下
试了好像并不是
flag3解压出一个视频和word文档
文档中的520711是干什么的呢?难不成是flag2的密码?试了一下,并不是,先留着
这个视频有什么东西呢?用一下potplayer(kinovea有点问题,打不开)看看
potplayer如何调整时间间隔,百度一下步骤
1.直接点击鼠标右键,选择“播放”-“定位”,取消“以关键帧定位”。
2.右键找到定位,选择“时间跨度设置”。
3.将调解的大小设置合适的时长,取消下侧的框选。
4.还要注意定位的快捷键是使用“D/F”。
… …/… ./… ./… …/
敲击码
CTF之常见编码(三) - ziwang - 博客园 (cnblogs.com)
对应下来就是
WLLM
继续看,7.36秒发现
Base64
dXBfdXBfdXA=
up_up_up
这俩连起来应该就是前面压缩包的密码了(但是需要把前面的大写转换为小写)
wllmup_up_up
010打开
在结尾发现flag
flag{A2e_Y0u_Ok?}
第一道题目,应该可以想到凯撒密码,毕竟题目名称都暗示这么明显了(Caesar是凯撒的意思)而且f→g,l→m,a→b,g→h也很明显,移位数多试几次,这道题移位数是1,解出来的正好含有题目名称,包上flag交上就好了
再看第二题,这个题就有意思了,低个头,看的是什么呢?
对了,是键盘,而且看一下这几个字母,想到了键盘上的字母,用线连起来,就构成了几个字母
虽然有点难看,但是能看出来这是个CTF,看来每个题目的题目都是有深意的~
EWAZX RTY TGB IJN IO KL
flag{CTF}
竟然是一个exe文件,运行试试,总不能有病毒吧
需要输入密码,随便输了一个之后就自动关闭了,接下来就要寻找密码了,
010先看看
DOS是什么?
继续寻找线索
卡了,
无
是一道图片题
010打开,在FFD9之后还藏着一个zip,用kali的binwalk -e分离一下
分出来一个zip和txt(txt就是zip里的内容,用的binwalk)
(奇怪,文件名中不能含有空格吗?失败了好几次)
txt打开是一些奇怪的东西,这个就是AAencode编码(头一次见)
找个网站
CTF在线工具-在线AAencode编码|AA编码|AAencode解码|AAencode编码原理|AAencode编码算法 (hiencode.com)
flag{happy double eleven}
和题目遥相呼应y
题目中出现扫一扫,首先考虑是不是藏着二维码,可能是LSB隐写,用stegsolve看一看
在blue,green,red的0通道都发现了一张一样的有点奇怪的照片,只有半截
调整三个通道的位数均为0,然后LSBfirst,然后试一下Bit plane order红绿蓝的顺序,调整好后,是这样的
试了好几次才找到,不过文件头好像有点问题,另存为一个文件看看
(另存为text可能会有点问题,如图)
save bin后缀改成png,010打开修改,
删去FF FE后,得到了半张二维码
关闭后重新用010打开,会提示这个
CRC校验码错误,按照这个修改一下
第4,5,6列都是高,改一下(从第6列开始改,不需要太大)
得到了一个完整的二维码
是一个百度网盘分享rar,(QR Research好像扫不出来),用微信扫一扫
解压出来一个txt,结果…
这实在是太难了,接下来思路全无
去看了一下大佬的wp,才知道这原来是NTFS数据流隐写,要用到NTFs Streams Editor这个新工具
https://files.cnblogs.com/files/rainbow7/ntfsstreamseditor.zip
这是好不容易才找到的一个纯净的
一番操作后,导出来一个pyc文件(只能搜索文件夹,把flag.txt放到一个文件夹里就好)
然后这是一个反编译,好难
借鉴一下大佬的wp,https://tool.lu/pyc/是一个反编译网站
代码如下
import base64
def encode():
flag = '*************'
ciphertext = []
for i in range(len(flag)):
s = chr(i ^ ord(flag[i]))
if i % 2 == 0:
s = ord(s) + 10
else:
s = ord(s) - 10
ciphertext.append(str(s))
return ciphertext[::-1]
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']
def decode(arg1):
ciphertext = arg1[::-1]
flag = ''
for i in range(len(ciphertext)):
if i % 2 == 0:
s = int(ciphertext[i]) - 10
else:
s = int(ciphertext[i]) + 10
s = s ^ i
flag += chr(s)
print(flag)
if __name__ == '__main__':
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']
decode(ciphertext)
得到
flag{Y@e_Cl3veR_C1Ever!}
解压之后
先学习一下有关Ntfs数据流的知识
在Ntfs文件系统中,病毒、木马和蠕虫或者它们的结合体等恶意程序可能隐藏在“Ntfs数据流”这样的特殊"文件"中,一般的文件管理器和工具不能发现和处理;Ntfs数据流处理工具NtfsStreamsEditor提供了强大的搜索扫描能力,帮助你找出危险所在;同时NtfsStreamsEditor提供了最强大的删除、附加、导入、导出、备份和还原等完整处理手段,是您必备的工具软件。
1.什么是Ntfs数据流(交换数据流或者ADS) ?
Ntfs数据流:Ntfs交换数据流 或 Ntfs可选数据流 ;Alternate Data Streams (ADS)
Ntfs数据流给文件附加了一些额外的信息,这些本不属于该文件的信息就叫做“交换数据流”;而文件本身(宿主文件)则叫做该文件的“主数据流(Primary Data Stream)”。
Ntfs数据流允许文件与多个数据流进行关联。例如,一个名为 text.txt 的文件可以包含一个名为 text.txt:secret(格式是“文件名:流名”)的可选数据流,并只允许知道该数据流名称或专门为数据流而设计的浏览程序(NtfsStreamsEditor)查看。可选数据流无法从原始文件长度中得知,但会随着对原始文件的删除,或将原始文件移动/复制到不支持可选数据流的分区(如 FAT 分区、软盘或网络共享位置)上而丢失。可选数据流在多方面有重要用途,但也容易因为被遗忘或未被探测到而白白耗费磁盘空间。
简单的创建一个数据流: 按住win+R(开始_运行) 调出"运行"对话框 输入
notepad c::123.txt 回答“是” 输入字符保存就创建了一个“隐藏的文件123.txt”。我们无法在“资源管理器”中看到有关数据流文件的变化。这种缺陷让木马有机可趁,通过NTFS数据流将自己隐藏起来,从此就从“资源管理器”中消失了。例如Rootkit木马中的文件隐藏功能,就是利用了NTFS数据流,而NtfsStreamsEditor完全能检测出来。
Ntfs数据流(ADS)的宿主文件可以是一个磁盘(像上例),一个目录,一个文件,因为在操作系统内部,这些都是“文件”,ADS不能没有宿主文件。
备注:在操作系统内部任何文件名都有:KaTeX parse error: Undefined control sequence: \1 at position 14: DATA一个扩展;比如C:\̲1̲.txt 实际为C:\1.tx…DATA (2个冒号) ;而关联的数据流C:\1.txt:mysex.jpg 实际为 C:\1.txt:mysex.jpg:$DATA(前后个一个冒号),这也是为什么冒号:不能作为文件名的原因之一。2.Ntfs数据流的用途?常见的数据流。
可以存放一些附加的信息。
@卡巴斯基(kaspersky)杀毒软件的iStream 技术使用KAVICHS作为处理过程的标志。
@下载的文件具有Zone.Identifier的数据流:当我们使用IE浏览器把网上的可执行文件保存到NTFS文件系统的分区上,IE浏览器就会自动给下载回来的文件附加一个交换数据流,当我们双击运行带有这种数据流的文件时,系统就会出现一个“安全警告”对话框提示。
@收藏夹的网址快捷方式一般具有名为favicon的数据流,存放的就是网站图标。
@隐藏其他的一些信息,比如木马,NtfsStreamsEditor完全能检测出来。备注:
NTFS是微软Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式。NTFS比FAT文件系统更稳定,更安全,
功能也更为强大。如果要让FAT文件系统转换为NTFS文件系统,可以在“命令提示符”中输入“convert 分区盘符: /fs:ntfs”,即可将该分区的文件系统转换为NTFS。
模仿上一道题目的解题过程,解压之后直接扫描一下
010看
在FF D9文件尾之后还有一串不明字符
在结尾又有一个FF D9,可能是另一张图片?
不过这个开头好像有点问题,保存下来看看
是这样一串字符
MZWGCZ33GZTDCNZZG5SDIMBYGBRDEOLCGY2GIYJVHA4TONZYGA2DMM3FGMYH2
会不会是Base 32编码呢?虽然并不常见,试试看
竟然真是,OK
复习一下base32
Base32编码是使用32个可打印字符(字母A-Z和数字2-7)对任意字节数据进行编码的方案,编码后的字符串不用区分大小写并排除了容易混淆的字符,可以方便地由人类使用并由计算机处理。
Base32将任意字符串按照字节进行切分,并将每个字节对应的二进制值(不足8比特高位补0)串联起来,按照5比特一组进行切分,并将每组二进制值转换成十进制来对应32个可打印字符中的一个。
由于数据的二进制传输是按照8比特一组进行(即一个字节),因此Base32按5比特切分的二进制数据必须是40比特的倍数(5和8的最小公倍数)。例如输入单字节字符“%”,它对应的二进制值是“100101”,前面补两个0变成“00100101”(二进制值不足8比特的都要在高位加0直到8比特),从左侧开始按照5比特切分成两组:“00100”和“101”,后一组不足5比特,则在末尾填充0直到5比特,变成“00100”和“10100”,这两组二进制数分别转换成十进制数,通过上述表格即可找到其对应的可打印字符“E”和“U”,但是这里只用到两组共10比特,还差30比特达到40比特,按照5比特一组还需6组,则在末尾填充6个“=”。填充“=”符号的作用是方便一些程序的标准化运行,大多数情况下不添加也无关紧要,而且,在URL中使用时必须去掉“=”符号。
与Base64相比,Base32具有许多优点:
适合不区分大小写的文件系统,更利于人类口语交流或记忆。
结果可以用作文件名,因为它不包含路径分隔符 “/”等符号。
排除了视觉上容易混淆的字符,因此可以准确的人工录入。(例如,RFC4648符号集忽略了数字“1”、“8”和“0”,因为它们可能与字母“I”,“B”和“O”混淆)。
排除填充符号“=”的结果可以包含在URL中,而不编码任何字符。
Base32也比Base16有优势:Base32比Base16占用的空间更小。(1000比特数据Base32需要200个字符,而Base16则为250个字符)
Base32的缺点:Base32比Base64多占用大约20%的空间。因为Base32使用8个ASCII字符去编码原数据中的5个字节数据,而Base64是使用4个ASCII字符去编码原数据中的3个字节数据。
本页Base32编码方案符合RFC4648文档描述。输入字符集为UTF-8编码。
flag{6f1797d4080b29b64da5897780463e30}
是一道流量分析题目
首先追踪流
TCP
HTTP,好像有点东西,应该有一些图片之类的
那就导出试试
果然有些东西,save all看看
不过这个视频好像打不开
然后再010看一下
好像也没什么,我又卡壳了
借鉴一下大佬的思路,原来是两张图片拼凑到一起才能看到flag,第一次见到,用stegsolve操作一下
logo的这个通道有点东西,用Image Combiner进行叠加,调整通道发现flag(可是我还不明白为什么就是这两张图片,这背后的原理又是什么呢?)
flag{J0hn_th3_Sn1ff3r}
名叫弱口令
一个加密的zip,看看是不是伪加密
并不是伪加密,那就爆破,密码应该并不复杂
但是速度快到我以为是伪加密,这是为什么?
再回过头仔细看看
这个东西好像有点奇怪,看不到,在哪里能看到呢?
原来要到sublime text里去看,新东西
好神奇,这应该是莫斯密码吧,去解一下看看,换行符打成空格,点就是·,横就是-,
… . .-… .-… ----- …-. — .-. …- –
在线摩斯密码翻译器_摩斯密码-ME2在线工具 (metools.info)
这应该就是解压密码了吧(我还以为是flag)
并没有什么,stegsolve看看
试了几次好像也没啥,又不会了
接下来又是别人的解答
首先了解一下cloacked-pixel这个工具一个LSB分析工具
下载地址(下载要注册一个账号)
cloacked-pixel: LSB steganography and detection (gitee.com)
然后是常见的弱口令也要了解一下
常见的弱口令总结 - Fright-Moch - 博客园 (cnblogs.com)
[+] image size: 500x500 pixels.
[+] Written extracted data to 2.txt
apt-get install cloacked-pixel-master
sudo vim /etc/apt/sources.list
阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
python2 .\lsb.py extract .\1.png flag
[+] Image size: 500x500 pixels.
[+] Written extracted data to flag.txt
flag{HELL0FONUM}
题目名称就很形象,有点像base64隐写
试试上次的脚本能不能跑出来
很顺利
脚本如下(flag.txt与脚本文件放在同一文件夹可以直接跑)
import base64
def get_base64_diff_value(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 solve_stego():
with open('flag.txt') 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','')
norm_line = line.replace('\n', '').encode('utf-8')
norm_line = base64.b64decode(norm_line).decode('utf-8')
norm_line = base64.b64encode(norm_line.encode('utf-8')).decode('utf-8')
norm_line = norm_line.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 range(0, len(bin_str), 8):
res_str += chr(int(bin_str[i:i + 8], 2))
return res_str
if __name__ == '__main__':
solve_stego()
flag{fazhazhenhaoting}
没有什么提示,直接按照以前的步骤走一遍
但是这个题目有一些没见过的协议
先去了解一下
(2条消息) TLSv1.3学习_lbl的博客-CSDN博客
DNS
DNS只是提供了域名和IP地址之间的静态对应关系,当IP地址发生变化时,DNS无法动态的更新域名和IP地址之间的对应关系,从而导致访问失败。但是DDNS系统是将用户的动态IP地址映射到一个固定的域名解析服务上DDNS
DDNS用来动态更新DNS服务器上域名和IP地址之间的对应关系,从而保证通过域名访问到正确的IP地址。很多机构都提供了DDNS服务,在后台运行并且每隔数分钟来检查电脑的IP地址,如果IP发生变更,就会向DNS服务器发送更新IP地址的请求NBNS--------NetBIOS漏洞【询问主机名】
NBNS是网络基本输入/输出系统 (NetBIOS) 名称服务器的缩写。它也是TCP/IP协议的一部分。它负责将计算机名转化为对应的IP。NBNS在WIndows用的较少,Windows普遍采用LLMNR协议。
特点
Name query NB是请求包,
Name query response NB是响应包。
双方的端口号均为137。mDNS【局域网中的DNS】
mdns 即多播dns(Multicast DNS),mDNS主要实现了在没有传统DNS服务器的情况下使局域网内的主机实现相互发现和通信,遵从dns协议,使用现有的DNS信息结构、名语法和资源记录类型。并且没有指定新的操作代码或响应代码。
特点
端口为5353
主机的域名为.local 结尾
mdns 使用组播地址为: 224.0.0.251 (ipv6: FF02::FB)在局域网中,设备和设备之前相互通信需要知道对方的ip地址的,大多数情况,设备的ip不是静态ip地址,而是通过dhcp 协议动态分配的ip 地址,如何设备发现呢,就是要mdns大显身手,例如:现在物联网设备和app之间的通信,要么app通过广播,要么通过组播,发一些特定信息,感兴趣设备应答,实现局域网设备的发现,当然mdns 比这强大的多。
比如,A主机进入局域网,开启了 mDNS 服务,并向 mDNS 服务注册以下信息:我提供 FTP 服务,我的IP是 192.168.1.101,端口是 21。当B主机进入局域网,并向 B 主机的 mDNS 服务请求,我要找局域网内 FTP 服务器,B主机的 mDNS 就会去局域网内向其他的 mDNS 询问,并且最终告诉你,有一个IP地址为 192.168.1.101,端口号是 21 的主机,也就是 A 主机提供 FTP 服务,所以 B 主机就知道了 A 主机的 IP 地址和端口号了。
mDNS 具体协议规范地址如下 : http://www.ietf.org/rfc/rfc6762.txtLLMNR【是DNS的备胎方案】
在DNS 服务器不可用时,DNS 客户端计算机可以使用本地链路多播名称解析 (LLMNR—Link-Local Multicast Name Resolution)(也称为多播 DNS 或 mDNS)来解析本地网段上的名称。例如,如果路由器出现故障,从网络上的所有 DNS 服务器切断了子网,则支持 LLMNR 的子网上的客户端可以继续在对等基础上解析名称,直到网络连接还原为止。
除了在网络出现故障的情况下提供名称解析以外,LLMNR 在建立临时对等网络(例如,机场候机区域)方面也非常有用。链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)数据包格式的协议,IPv4和IPv6的主机可以通过此协议对同一本地链路上的主机执行名称解析。Windows 操作系统从 Windows Vista开始就内嵌支持,Linux系统也通过systemd实现了此协议。 LLMNR定义在RFC 4795。
224.0.0.252,对应的 IPv6 地址是 [FF02::1:3]
LLMNR工作过程
(1) 主机在自己的内部名称缓存中查询名称。如果在缓存中没有找到名称,那么主机就会向自己配置的主DNS服务器发送查询请求。如果主机没有收到回应或收到了错误信息,主机还会尝试搜索配置的备用DNS服务器。如果主机没有配置DNS服务器,或者如果在连接DNS服务器的时候没有遇到错误但失败了,那么名称解析会失败,并转为使用LLMNR。
(2) 主机通过用户数据报协议(UDP)发送多播查询,查询主机名对应的IP地址,这个查询会被限制在本地子网(也就是所谓的链路局部)内。
(3) 链路局部范围内每台支持LLMNR,并且被配置为响应传入查询的主机在收到这个查询请求后,会将被查询的名称和自己的主机名进行比较。如果没有找到匹配的主机名,那么计算机就会丢弃这个查询。如果找到了匹配的主机名,这台计算机会传输一条包含了自己IP地址的单播信息给请求该查询的主机。LLDPDU协议
网络设备可以通过在本地网络中发送LLDPDU(Link Layer Discovery Protocol Data Unit)来通告其他设备自身的状态。是一种能够使网络中的设备互相发现并通告状态、交互信息的协议。LLDP协议使得接入网络的一台设备的主要能力,管理地址,设备标识,接口标识等信息发送给同一个局域网的其他设备,当一个设备从网络中接收到其它设备的信息时,就将这些信息以MIB的形式存储起来。SSDP协议
SSDP(简单服务发现协议)是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(network client)提供了一种发现网络服务(network services)的机制,采用基于通知和发现路由的多播方式实现。
SDP协议的设计初衷是使用HTTP协议进行设备的发现,是UPnP协议的组成部分。
知道这么多应该差不多了,然后再来看题
TCP
HTTP
UDP
HTTP流里好像有点东西,导出来看看
根据名字判断,最可疑的应该是这个压缩包,打开看看
是个加密的zip,
确实是
关于ZIP伪加密,又找了几个方法
zip伪加密 - 浩琦很好奇 - 博客园 (cnblogs.com)
今天我们来试试新方法(以前的方法肯定可以,不过还是尝试一下新方法吧)
然后会产生一个新的压缩包
打开这个压缩包,就是无加密的了,flag也很容易看到
先下载一个文件
ZipCenOp.jar 链接:https://pan.baidu.com/s/1RLRPN0fKWmqdaqLlV409Wg 密码:twl4
下载完成后打开(需要安装Java环境)
把ZipCenOp.jar文件和secret.zip放到同一个文件夹,然后在空白处 Ctrl+Shift+右键,在此处打开Windows Powershell 窗口
然后输入
java -jar .\ZipCenOp.jar r .\secret.zip
这个样子就成功了,然后我们打开这个目录下的zip,就是未加密的啦
打开flag这个文件,看到flag
flag{c5558bcf-26da-4f8b-b181-b61f3850b9e5}
是一道视频题,以前做过这个类型的题目
现在再试试kinovea这个工具,看看能不能试出来什么
kinovea下载链接
Kinovea
在75帧出现了一个二维码
继续看看,还有什么东西
148帧
246帧
一共发现了3个二维码,扫扫看
75帧
148帧
246帧
key1-key3连起来是 i want play
感觉这个句子少了点什么,而且从语法角度也不太合适
再去看看还有没有二维码,好吧,我并没有找到
突然想起来potplayer也可以逐帧播放,下载链接
PotPlayer下载 - PotPlayer中文网 (potplayercn.com)
并且可以调整时间间隔,百度一下步骤
1.直接点击鼠标右键,选择“播放”-“定位”,取消“以关键帧定位”。
2.选择“时间跨度设置”。
3.将调解的大小设置合适的时长,取消下侧的框选。
4.还要注意定位的快捷键是使用“D/F”。
然后我就神奇地发现了二维码,potplayer太棒了
扫一下
key1-key3连起来是 iwantplayctf
那么这个是干什么的呢?老方法,回过头用010看看视频
发现了最后有一串类似base64编码的尾巴,去解解看
UmFyIRoHAQAzkrXlCgEFBgAFAQGAgADh7ek5VQIDPLAABKEAIEvsUpGAAwAIZmxhZy50eHQwAQAD
Dx43HyOdLMGWfCE9WEsBZprAJQoBSVlWkJNS9TP5du2kyJ275JzsNo29BnSZCgMC3h+UFV9p1QEf
JkBPPR6MrYwXmsMCMz67DN/k5u1NYw9ga53a83/B/t2G9FkG/IITuR+9gIvr/LEdd1ZRAwUEAA==
这好像是个rar文件,然后保存成rar文件
保存成rar
不知道为啥,他打不开,
win rar都修复不了~换个完整的文件头也不行。。。
然后改了半天,才发现是这个网站的问题,不知道为什么,它解码的时候给漏了好多个00,从这2张图可以很明显地看出来
我改变了一下输出结果的格式就好了,输出为16进制(血泪教训)
010再试试
终于可以了
密码应该就是那4个key拼凑而成的,解压得到flag
flag{CTF-from-RuMen-to-RuYuan}
一共就几个文件,都打开看看吧
文档说明
在打开systemzx.exe时
点击安装之后,在相应D出现了几个新的文件
点击运行试试看
运行flag.exe后,产生了一个机密文件.txt,打开看看
发现了flag,不明白这个题目在考察什么???
Flag{379:7b758:g7dfe7f19:9464f:4g9231}
解压出了68个zip,根据题目描述,拼在一起,如何拼在一起呢?
先打开几个看看
那就是真加密了
接下来俺爆破无果,010看也没看出什么,只能求助网上的wp了,这是其中一个思路
这个东西我一直没有太过关注,
利用CRC校验码爆破这个方法还是头一次见
那么这个题目的思路应该就是把这68个zip的crc校验码拼到一起,然后去解码,解码结果保存为文件,就可以了吧(后面没的思路和上一道题目差不多)
这是网上找的爆破脚本(脚本与68个压缩包放在同一文件夹就可)
import zipfile
import string
import binascii
def CrackCrc(crc):
for i in dic:
for j in dic:
for k in dic:
for h in dic:
s = i + j + k + h
if crc == (binascii.crc32(s.encode())):
f.write(s)
return
def CrackZip():
for i in range(0,68):
file = 'out'+str(i)+'.zip'
crc = zipfile.ZipFile(file,'r').getinfo('data.txt').CRC
CrackCrc(crc)
dic = string.ascii_letters + string.digits + '+/='
f = open('out.txt','w')
CrackZip()
print("CRC32碰撞完成")
f.close
得到所有zip的CRC校验码(但是好慢)
z5BzAAANAAAAAAAAAKo+egCAIwBJAAAAVAAAAAKGNKv+a2MdSR0zAwABAAAAQ01UCRUUy91BT5UkSNPoj5hFEVFBRvefHSBCfG0ruGnKnygsMyj8SBaZHxsYHY84LEZ24cXtZ01y3k1K1YJ0vpK9HwqUzb6u9z8igEr3dCCQLQAdAAAAHQAAAAJi0efVT2MdSR0wCAAgAAAAZmxhZy50eHQAsDRpZmZpeCB0aGUgZmlsZSBhbmQgZ2V0IHRoZSBmbGFnxD17AEAHAA==
解码,保存下来
根据提示修复文件,文件头没有见过,文件尾是3D 7B 00 40 07 00,这是RAR的文件尾,添加文件头52 61 72 21 1A 07 00,保存
打开rar看到flag
打开flag.zip看看
是个加密的zip,在注释里有一串貌似是base32的编码,可能是密码
去解解看
不过好像解不出来,那先放一放,回去看看那些不明文件,
010打开一个看看
头是jpg,尾巴多了一点东西
那就改改后缀看看能不能打开
可以顺利打开,很明显这是一张二维码的一小部分,可以猜想,把全部的文件后缀都改成jpg,然后再把他们拼起来,不就是一张完整的二维码嘛,说干就干,不过也要借助一下脚本,python真是个好东西
import os
path = 'D://CTF//attachment//1' #文件具体路径,这个1是那堆文件所在的文件夹,不成功时可以改个路径
for i in os.listdir('D://CTF//attachment//1'): #路径最好用绝对路径,不会出错
#if i == '修改后缀.py':
# continue
#else:
oldname = os.path.join(path,i)
newname = os.path.join(path,i+'.jpg')
os.rename(oldname,newname)
运行完后,该怎么把这36张图片拼到一起呢?这是个问题(你也不知道顺序)
其实,在之前的图010看的时候,在文件尾后面还有一个数字,
猜测这就是顺序,可以验证一下,
找一个3个角的特殊位置的图片,猜测数字可能是1,6,或31(根据图片数量确定位置)
不放心可以再看看另外两个角
这下可以百分百确定了,这个数字就是拼图顺序
可以利用python脚本根据这个顺序命名文件
import os
from PIL import Image
#目录路径
dir_name = r"./"
#获取目录下文件名列表
dir_list = os.listdir('./')
#print(dir_list)
#从列表中依次读取文件
for file in dir_list:
if '.jpg' in file:
f=open(file ,'rb')
n1 = str(f.read())
n2 = n1[-3:]
#经过测试发现这里要读取最后3个字节,因为最后还有一个多余的字节,不知道是不是转字符串的原因导致在末尾多了一个字符
#print(file) #输出文件内容
#print(n2)
f.close() #先关闭文件才能重命名,否则会报`文件被占用`错误
os.rename(file,n2+'.jpg') #重命名文件
这些90多的,其实是1-9,代码写的不够好,出了点问题,改一下吧
拼图步骤如下:
1.新建,调整高度和宽度,我调整为24X24
2.文件->置入嵌入对象,选择图片
3.操作
注意有些地方可能会有一点点重合,
嘿,拼的还不错
扫一下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x4Pyxsn1-1657866852338)(https://wangyuhan2021-1308234555.cos.ap-nanjing.myqcloud.com/image-20220128225515420.png)]
哦,这个应该就是那串编码的解码顺序了!难怪解不出来
base32→16进制→13→85→85→64→85(根据那串编码的格式判断顺序)
这个13不是base家族的,查了一下,是rot13编码
GNATOMJVIQZUKNJXGRCTGNRTGI3EMNZTGNBTKRJWGI2UIMRRGNBDEQZWGI3DKMSFGNCDMRJTII3TMNBQGM4TERRTGEZTOMRXGQYDGOBWGI2DCNBY
base32解码:3A715D3E574E36326F733C5E625D213B2C62652E3D6E3B7640392F3137274038624148
base16解码::q]>WN62os<^b]!;,be.=n;v@9/17’@8bAH
rot13解码::d]>JA62bf<^o]!;,or.=a;i@9/17’@8oNU
base85解码:PCtvdWU4VFJnQUByYy4mK1lraTA=
base64解码:<+oue8TRgA@rc.&+Yki0
base85解码:ThisIsSecret!233
解压密码就是ThisIsSecret!233
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9E31blIi-1657866852339)(https://wangyuhan2021-1308234555.cos.ap-nanjing.myqcloud.com/image-20220128234122574.png)]
flag{Qr_Is_MeAn1nGfuL}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XBgzGg2I-1657866852340)(https://wangyuhan2021-1308234555.cos.ap-nanjing.myqcloud.com/image-20220129160833649.png)]
flag.txt打开
根据这个提示,flag可能要通过某些步骤生成,第一时间想到那个exe程序,打开看看
然后这个程序就一直是这个界面,再看看其他的文件吧
刚刚打开的是副本(2),打开副本(32)看看
那就根据它的提示,用按照它的提示,用VISUAL C++之类的东西打开,不过我想试试直接用WIN RAR 打开看看行不行
查找一下,找到flag
flag{29a0vkrlek3eu10ue89yug9y4r0wdu10}
txt打开
010看看两张图
这张图挺正常
很明显,这个图隐藏着一个zip,用Kali的binwalk分离一下看看,
打开zip看看
是一个加密的,看看是不是伪加密,可以用win rar修复功能判断
那就是真加密,密码
先爆破试试
4个长度的数字
6个长度的数字
解压打开txt
WVRKc2MySkhWbmxqV0Zac1dsYzBQUT09
有点像base64编码,解解看
不过好像有点问题,这个地方去查了一下,原来这里要连续解码3次,学到了学到了
最后解出来是 killerqueen(正好是我喜欢的一首歌诶)
然而这个并不是flag,好奇怪,哪个地方没有处理好呢?
去百度了一下,原来第二张图片是outguess隐写,但是我不知道怎么看出来的
那这个killerqueen就是密码,用Kali命令去解一下
outguess -k 'killerqueen' -r jljy.jpg out.txt
终于得到flag了
flag{pretty_girl_alison_likes_jojo}
题目描述.txt
从娃娃抓起.txt
md5还不太了解,去查一查
一.作用:一般用于互联网一种数据的唯一性标识。
二.实体:本身是一个128位的0/1比特。一般被表示为16进制的字符串。4个比特位组成一个16进制字符,因此常常能见到的是(128/4=)32个16进制字符组成的字符串 4951 dd1c bff8 cbbe 4cd4 475c a939 fc8b,当然它实质是一种消息摘要算法
三.特点:
1.完全相同的一段数据,不论时间地点(加密算法相同的条件)加密出的32位的字符串完全相同。
2.加密过程本身就是一个有损的加密过程。因此几乎不能还原出原始数据。安全
补充:一般还原出原始数据都是使用碰撞的方式来还原。意思大概和穷举的意思一样,有足够多的原始数据量,世界上的所有数据用 1n来表示,把1n都用MD5计算一遍得1xnx(x表示计算后得的数)。把1n当成键值对的键,把1x~nx放入键值对的值,当得到一个MD5字符串,通过值去找键,就知道是什么数据了。因为你本来就拥有数据,因此才能找到数据。但当你没有原始数据时,想通过128比特的玩意去恢复大于128比特的数据本身就是玩笑,数据量都不一样,至于原理有兴趣的朋友可以研究研究信息论。不想研究的可以回想回想之前学的香农公式。再从这一点去研究。又有大的世界。
————————————————
版权声明:本文为CSDN博主「Anakki」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_29519041/article/details/84403649
然后需要知道这句话指的是什么,这串数字和字母去百度一下
那就好办了,这句话就是人工智能也要从娃娃抓起,
附上两个网站
中文电码查询 Chinese Commercial Code - 标准电报码免费在线查询|姓名电码|美国签证电码 (mcdvisa.com)
五笔输入法编码在线查询系统.汉字转拼音 (zd9999.com)
把这句话去加密一下,得到flag
MD5在线加密 - 站长工具 (chinaz.com)
flag{3b4b5dccd2c008fe7e2664bd1bc19292}
和套娃似地,一个zip套着一个zip,
看看这个ZIP是不是伪加密
不是伪加密,那先爆破
修改后解压
这个ZIP仍然是加密的,
使用WIN RAR修复之后仍然是加密的,那就是真加密了,但是尝试爆破试不出来
再看看这个setup.sh文件
#!/bin/bash
\#
zip -e --password=`python -c "print(__import__('time').time())"` flag.zip flag
原来如此,这个ZIP的解压密码的掩码是要通过这个文件来获得的,那就在python环境下运行一下代码,多试几次
那掩码应该就是1643644???.??去试试
试了半天不行就很奇怪,难道我做错了?
百度
原来如此,再设置一下(注意,这个题目要求的是python2,python2的精度是两位)
解压得到flag
flag{fkjabPqnLawhvuikfhgzyffj}
010查看
猜测这应该是一个PDF文件,修改后缀再打开
只有一张图片,把照片移一下,出来一个图片(用的破解版的Adobe Acrobat DC)
把内容保存下来,可以用QQ的文字识别
'0x77637466323032307b746831735f31735f405f7064665f616e645f7930755f63616e5f7573655f70686f7430736830707d ’
0x可以不要,试试010
flag{th1s_1s_@_pdf_and_y0u_can_use_phot0sh0p}
这个题目很难想
只有这一个字符串,base解码解不出来,其他的思路也没想到
观察这个字符串的特点,差不多都是
010编辑一下,先把它看成十六进制
换到右边
可以观察到左侧数字非常有规律,差不多都是60,30左右的样子,我们可以考虑ASCII,位数需要算一下,根据这个字符串中最小的来算,或者多试几次,总可以试出来的,在这里应该是128
借一个一个python脚本
key='d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e4b3b2b2e3e6b4b3e2b5b0b6b1b0e6e1e5e1b5fd'
hex=[]
flag=''
for i in range(0,len(key)-1,2):
zdh=key[i:i+2]
hex.append(zdh)
for i in range(len(hex)):
zdh1=hex[i]
flag+=chr(int(int(zdh1,16))-128)
print(flag)
flag{922ab9974a47cd322cf43b50610faea5}
打开是一个word文档,和黑客有关
010打开
竟然没有模板,按照老思路,修改成zip后缀试试,(文件头都一样)
一个个地找呗
flag{unz1p_3v3ryth1ng}
一道流量分析题目,根据题目描述,流量包里应该有图片类文件
老思路。先追踪
再导出
save all,好家伙,直接一百七十多张照片
那么flag藏在哪张图片里呢?wires hark看看有什么特殊的流
Kali上的新工具exiftool *|grep flag试一试
ExifTool是一种用于提取文件元数据的强大工具。它不仅适用于图像,还适用于其他格式的文件,比如PDF和mp4等。它使我们能够更新和删除文件的元数据,并提供有关文件的许多信息。可以通过这个回答了解
(2条消息) ubuntu 安装kali_如何在Linux,Windows,Kali,Ubuntu,Mint和示例中安装和使用exiftool_cunjiu9486的博客-CSDN博客
安装(对于Kali2021.3版本,如已安装请忽略)
sudo apt-get install libimage-exiftool-perl
搜索flag
另一半就不好找了,在Kali上用工具我搞了半天也没找出什么,还是回到wires hark上直接找吧(毕竟以前就有这个解法的题目)
在TCP114流中,找到另一半flag(不是我找出来的,找半天没找到,百度的)
flag{ae58d0408e26e8f26a3c0589d23edeec}
先看看是不是伪加密
win rar修复之后,仍然是加密的,那就是真加密,去爆破
解压
再爆破(忽然发现密码就是zip名)
解压
盲猜密码是0653
当我解压到这个步骤的时候,我感觉事情好像不太对\0573\0114\0653\0234\0976\0669\0540\0248\0275\0149\0028\0099\0894\0991\0291\0414\0296\0241\0510\0914\0340\0140\0286\0532\0347\0345
所以,只能求助脚本,要不根本解不完啊
脚本
import zipfile
name = '0573'
while True:
fz = zipfile.ZipFile(name + '.zip', 'r')
fz.extractall(pwd=bytes(name, 'utf-8'))
name = fz.filelist[0].filename[0:4]
fz.close()
好家伙,解压出来1000个zip
还跑出来一个qr.zip,打开,有点像RGB三色素那个(而且不是255 255 255就是0 0 0,绝对是黑白的二维码)
用脚本把它转换成图片吧
from PIL import Image
import os
string = ''
file = open('./qr.txt')
MAX = 200
picture = Image.new("RGB", (MAX, MAX))
for y in range(MAX):
for x in range(MAX):
string = file.readline()
picture.putpixel([x, y], eval(string)) # 直接使用eval()可以转为元组
picture.show()
运行之后自动出现一张二维码
扫描得到 flag
flag{ta01uyout1nreet1n0usandtimes}
解压之后是一个音频,用Audacity打开,应该是段摩斯电码吧
写下来
— . … . … . . … . … . . . .-- . - . … . … . …- … . … . … . … . … . . . …
忽然感觉不太对,这是摩斯电码吗,再仔细听一听,好像是拨号按键时的声音(大意了)
原来是DTMF拨号音识别,这有个程序可以识别dtmf2num.exe
下载地址,实在是太不好找了
https://www.softpedia.com/get/Multimedia/Audio/Other-AUDIO-Tools/DTMF2NUM.shtml#download
在当前文件夹中打开power shell(鼠标点击空白,Ctrl+Shift+右键),输入
.\ dtmf2num.exe girlfriend.wav
回车
DTMF numbers: 999*666*88*2*777*33*6*999*4*4444*777*555*333*777*444*33*66*3*7777
然后就联想一下以前的九键手机按键,大概是这样的
盲猜999即按3次9得到的字母(小时候打字的经验),666即按3次6得到的字母,以此类推:
999–y,666–o,88–u,
这前三个拼起来便是单词you,所以猜想是对的,继续:
2–a,777–r,33–e,6–m,999–y,4–g,4444–i,777–r,555–l,333–f,777–r,444–i,33–e,66–n,3–d,7777–s.
7777和4444只能是S和I,毕竟没有第四个字母。
连起来便是 youaremygirlfriends
flag{ youaremygirlfriends}
是一道流量分析题,
先追踪流
HTTP
TCP
追踪出的内容是一模一样的
导出对象
HTTP(只有这里面有文件)
保存下来看看
这个lsass.dmp文件有些可疑,文件很大,
lsass是windows系统的一个进程,用于本地安全和登陆策略。
在foremost分离时有了发现
其他文件夹里都是些没用的图片
加密的txt,
提示administrator的密码,联想到前面那个dmp文件,得知需要用一个新工具来获取dmp文件中的用户密码
下载地址
Releases · gentilkiwi/mimikatz (github.com)
解压之后忽略安全软件提出的警告
mimikatz使用教程
(4条消息) 内网渗透神器(Mimikatz)——使用教程_W小哥-CSDN博客_mimikatz
然后把lsass文件放到mimikatz.exe文件目录下,再打开mimikatz
输入
privilege::debug
sekurlsa::minidump 1.dmp
sekurlsa::logonpasswords full
回车
password:W3lc0meToD0g3
解压打开
得到flag
flag{This is the secret of the administrator!}
010看图片
图片修改高之后也没出现什么东西
foremost分离也没有东西
再回头看看那几个不认识的文件吧
先打开这个html文件看看
用记事本打开,按照经验查查找flag或者password
出现一串base32编码,
ON2WG5DGPNUECSDBNBQV6RTBNMZV6RRRMFTX2===
解出来
试了一下发现并不是flag,emmm,只能再重点看一下图片了
会不会是LSB隐写呢?用stegsolve看看
试了几次找出来了一串字符
U2FsdGVkX1+zHjSBeYPtWQVSwXzcVFZLu6Qm0To/KeuHg8vKAxFrVQ==
但是却解不出来,好奇怪
百度一下大神的wp,才知道这原来是DES加密,第一次见
介绍(好复杂看不懂)
DES算法详解 - songoo - 博客园 (cnblogs.com)
常用DES解密网站
在线Triple DES加密 | Triple DES解密- 在线工具 (sojson.com)
解出来
flag{U_F0und_1t}
流量分析题
追踪流
导出HTTP对象,果然有东西
save all之后,有很多东西
这个题和前面那个题目有点像,都是有好多文件
对,是百里挑一这道题,利用Kali命令直接搜索flag,CTF或者password之类的字样
打开Kali,在该文件目录下打开终端
输入命令
grep -r 'CTF'
找到flag
但是如果把CTF改成password,可能会找不到
flag{password_is_not_weak}
打开这个程序是这样的
我就等了一会,说不定会出现什么东西
但是过了很久也没出现啥
忽然发现他说到2020.9.17会告诉我们flag
于是我把电脑时间改了一下
修改时间之后重新打开,出现了flag
flag{We1cOm3_70_cyber_security}
a2FuYmJyZ2doamx7emJfX19ffXZ0bGFsbg==
然后我试了试也不是凯撒密码,那该怎么办呢?
经过一番搜集,原来这是栅栏密码
什么是栅栏密码呢?
栅栏密码(Fence)——python解密_有人_295的博客-CSDN博客_栅栏密码
几种加密方式简介
栅栏密码(The Rail-Fence Cipher)详解 - SwordCreater - 博客园 (cnblogs.com)
然后,多试几次每组字数,并且,这个题比较神奇地地方是要我们加密,而不是平常的解密,好家伙,这谁能想到
CTF在线工具-在线栅栏密码加密|在线栅栏密码解密|栅栏密码算法|Railfence Cipher (hiencode.com)
这就是个简单的凯撒密码啦,耐心试位数(不要认为开头一定是flag或CTF之类的哦)
flag{oyay_now_you_get_it}
010查看压缩包
把74改成7A,再打开压缩包,多了一张图片
010看图片没看出什么,再看看是不是LSB隐写
在blue 0通道有一张二维码
扫一下
ci{v3erf_0tygidv2_fc0}
这是干嘛的?先放在这,去看看另一个文件
010看看,发现了一些东西
保存下来看看
7-zip解压,虽然说文件尾错误,但是还是可以解压出来的,win-rar就不行
打开,是USB数据包内容(百度得知)
又要学到新东西了,使用命令提取键盘的数据
Kali命令
tshark -r key.pcap -T fields -e usb.capdata > usbdata.txt
打开txt
利用脚本获取信息
脚本下载地址
WangYihang/UsbKeyboardDataHacker: USB键盘流量包取证工具 , 用于恢复用户的击键信息 (github.com)
Kali命令
python UsbKeyboardDataHacker.py key.pcap
获得key:xinan
联想上面那个位置的东西,应该是维吉尼亚密码(其实我不知道,第一次见)
网站
维吉尼亚密码在线加密解密 - 千千秀字 (qqxiuzi.cn)
然后就是栅栏密码了
flag{vig3ne2e_is_c00l}
真实的压缩包.zip伪加密
修改为00后,解压
其实不用这么麻烦,7-zip可以直接打开
第一次接触到RSA加密
介绍
(4条消息) 非对称加密算法–RSA加密原理_Vincent的专栏-CSDN博客_非对称加密算法
import gmpy2
p=gmpy2.mpz(3)
q=gmpy2.mpz(11)
e=gmpy2.mpz(3)
l=(p-1)*(q-1)
d=gmpy2.invert(e,l)
c=gmpy2.mpz(26)
n=p*q
ans=pow(c,d,n)
print (ans)
如果pychrm或python报错,那可能是你没有安装gmpy2的缘故,安装步骤如下
1.进入如下网址安装whell(轮子):(别用pip install whell,不管用)
https://www.lfd.uci.edu/~gohlke/pythonlibs/
cp27代表2.7版本cp36代表3.6版本amd64代表64位win32代表32位
(小贴士,ctrl+F搜索gmpy2即可找到gmpy2库,省时又省力)
2.下载好后,把文件拖入到你对应编辑器的Scripts文件夹里(不用改名字)
3.在Scripts文件夹下打开power shell窗口(Ctrl+Shift+右键),输入
pip install + 你下载的文件放入的文件夹路径 + \文件名.whl(+字不用写进去)
举例:
pip install E:\Programes\python_work\Scripts\gmpy2-2.0.8-cp39-cp39-win_amd64.whl
然后回车,
上面已经显示gmpy2安装成功了可以通过pip install gmpy2测试一波,显示如下
但是,我的安装之路却错误百出,一上来下错了文件,找到正确的后版本又不行,唉,不过又试了一个版本,发现可以,然后还更新了一波,如图
OK,安装完成
运行后,出来了密码
当我以为解压密码是5的时候,却解不出来
呃,这里也有个坑,回过头看那个txt文档
所以解压密码是:答案是5
太坑人了
从最简单的修改高度看看
第二行4-7列,从第七列开始修改,不要修改的太高了
果真有东西
^是C语言中的异或,那我们尝试将“亦真亦假”这个文件的16进制按照每位与5异或看看,(毕竟他没有上场)
首先修改一下名字,改成英文,比如cuihua,然后复制到pycharm存放python文件的文件夹下
脚本
f1 = open('./cuihua','r')
data = f1.read()
f1.close()
flag_data = ""
for i in data:
tmp = int(i,16) ^ 5
flag_data += hex(tmp)[2:]
f2 = open('./flag.doc','wb')
f2.write(flag_data.decode('hex'))
f2.close()
如果报错,类似于这样
这是因为python3并不支持python2中的一些写法,
具体解释
解决方法如下
在python scripts文件夹下打开power shell窗口,输入
pip install h5py==2.10 -i https://pypi.doubanio.com/simple
文档中的数字代表什么呢?会不会是RGB?
看了一下以前做过的题目,好像并不是
那是什么呢?百度告诉我这是TTL隐写,哇,长见识了
TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4报头的一个8
bit字段。注意:TTL与DNS
TTL有区别。二者都是生存时间,前者指ICMP包的转发次数(跳数),后者指域名解析信息在DNS中的存在时间。IP报文在路由间穿梭的时候每经过一个路由,TTL就会减1。
这个东西是用来防止数据过多的。计算机网络知识。大多数情况下通常只需要经过很小的跳数就能完成报文的转发,远远比上限255小得多,所以我们可以用TTL值的前两位来进行传输隐藏数据。
所以加密的方法就是把一个ASCII码分4截,分到4个TTL里面,有点像是最低位像素的隐写。
啊,这些好像也没啥用,
按照以下步骤,
1.转成2进制,
2.写个脚本。取出前两位。重新组合。再以8位一组。
3.转换为16进制字符。再将16进制字符转换为字符(好复杂)
借助大佬的脚本,开干!
脚本如下
with open('Network.txt') as f:
lines = f.readlines()
n_num = []
#分析出所有的数
for i in lines:
if i!='\n':
n_num.append(int(i))
#拿到每个TTL值的高位
rlt = ''
for i in range(0,len(lines)):
tmp = bin(n_num[i])[2:]
tmp = '0'*(8-len(tmp)) + tmp
rlt += tmp[0:2]
#得到最终的结果并存到文件中
rlt2 = ''
for i in range(0,len(rlt),8):
rlt2 += chr(int(rlt[i:i+8],2))
with open('output.txt','w') as f:
f.write(rlt2.rstrip())
出来一个类似于zip文件的编码,存下来
打开,竟然是加密的
是伪加密
直接用7-zip打开
这些base64编码和以前做过的一道题很像
再试一下
import base64
f = open('1flag.txt','rb').read()
while True:
f = base64.b64decode(f)
if b'{' in f:
print(f)
break
else:
continue
pycharm python2环境下运行, 可能需要安装scikit-learn安装包(在设置里)
flag{189ff9e5b743ae95f940a6ccc6dbd9ab}
题目名称叫“draw",肯定与图片有关
百度
是logo语言,丢进网站
Logo解释器 (calormen.com)
不同的浏览器出来的结果可能不太一样,但内容是一样的
修改一下字母顺序
RCTF_HeyLogo
flag{RCTF_HeyLogo}
题目名称叫file header,而且图片打不开猜想是文件头有问题
010打开
果然,文件头没有,加上看看
89504E47
能打开了
太感动了,终于遇到一道简单题了
flag{3lit3_h4ck3r}
题目叫明文攻击,又有加密的zip
先看看这个图片
在文件尾FFD9后面还有一串未知字符
Kali下binwalk分离看看
看来没有什么东西,线索在这串字符中
这不是zip文件头的一部分嘛,而且还有flag.txt字符,存下来,把文件头补充完整
打开这个zip
它也有一个flag.txt文件,联想到题目名称和那个res.zip里的文件,使用archpr进行明文攻击
复习一下明文攻击原理
明文攻击是一种较为高效的攻击手段,大致原理是当你不知道一个zip的密码,但是你有zip中的一个已知文件(文件大小要大于12Byte)时,
因为同一个zip压缩包里的所有文件都是使用同一个加密密钥来加密的,所以可以用已知文件来找加密密钥,利用密钥来解锁其他加密文件。
archpr跑起来
运行一会后,停止攻击,
会出来一个密钥和一个新的压缩包,新的压缩包就和加密的压缩包被破解之后的
flag{3te9_nbb_ahh8}
是一个撕破了的二维码,把它拼起来应该就好了
废了半天劲才拼成这样,关键是还扫不出来
借用一下别人的图
qr-reasearch好像扫不出来,用微信扫一扫可以(也不容易扫出来)
flag{7bf116c8ec2545708781fd4a0dda44e5}
追踪TCP流发现了这个
哇,还是个加密的压缩包,但是导出对象里没有文件,那就用binwalk分离一下试试
有戏,打开看看
密码应该就是前面那个supercomplexpassword
flag{this_flag_is_your_flag}
rar是加密的
打开图片
名叫try to restore it, 提示我们修复它,如何修复呢?
感觉这个图片像LSB隐写,stegsolve打开看看
调整通道没有看到什么,改一下位深度
调整到这个数值的时候看到了熟悉的png文件头
保存下来打开
password:!@#$%67*()-+
按照提示binwalk分离原图片
打开压缩包,用前面那个password解压打开
又是熟悉的感觉,和network那道题很像
借助同样的思路,用脚本破解
with open('out.txt') as f:
lines = f.readlines()
n_num = []
#分析出所有的数
for i in lines:
if i!='\n':
n_num.append(int(i))
#拿到每个TTL值的高位
rlt = ''
for i in range(0,len(lines)):
tmp = bin(n_num[i])[2:]
tmp = '0'*(8-len(tmp)) + tmp
rlt += tmp[0:2]
#得到最终的结果并存到文件中
rlt2 = ''
for i in range(0,len(rlt),8):
rlt2 += chr(int(rlt[i:i+8],2))
with open('out1.txt','w') as f:
f.write(rlt2.rstrip())
打开out1.txt
rar-passwd:0ac1fe6b77be5dbe
解压
感觉这有点像word后缀改成zip再解压,改成doc后缀看看
啊?就这,玩捉迷藏呢
在文档的下面,这几个换行符有点不正常
全选以后,有猫腻,应该是不可见字符,复制到sublime里看看
MTEwMTEwMTExMTExMTEwMDExMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTEwMDAwMDAxMTExMTExMTExMDAxMTAx
MTEwMTEwMTEwMDAxMTAxMDExMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMTExMTExMTEwMTEwMDEx
MTEwMDAwMTAxMTEwMTExMDExMTEwMTExMTExMTAwMDExMTExMTExMTExMDAxMDAxMTAxMTEwMDAwMDExMTExMDAwMDExMTExMTEx
MTEwMTEwMTAwMDAxMTExMDExMTEwMTExMTExMDExMTAxMTExMTExMTEwMTEwMTEwMTAxMTExMTExMTAwMTEwMTExMTExMTExMTEx
MTEwMTEwMTAxMTExMTExMDExMTEwMTExMTAxMDExMTAxMTExMTExMTEwMTEwMTEwMTAxMTAxMTExMTAwMTEwMTExMTExMTExMTEx
MTEwMTEwMTAwMDAxMTAwMDAwMTEwMDAwMDAxMTAwMDExMTAwMDAwMTEwMTEwMTEwMTAxMTEwMDAwMDAxMTExMDA
是一些base64编码,解码看看
是一串二进制字符,转成16进制看看
没转出来啥东西,哪里错了呢?
忽然发现这些base64字符分行有点奇怪,会不会让我们分行解呢?
试一下
110110111111110011110111111111111111111111111111101110000001111111111001101
110110110001101011110111111111111111111111111111111101111111111111110110011
110000101110111011110111111100011111111111001001101110000011111000011111111
110110100001111011110111111011101111111110110110101111111100110111111111111
110110101111111011110111101011101111111110110110101101111100110111111111111
11011010000110000011000000110001110000011011011010111000000111100
哇,这就有意思了,这些01代表什么呢?
百度一下wp,这原来是可以变成图片的,脑洞太大了
用记事本替换功能把1或者0换成空格,试了一下,把1换成空格可以
把0连起来,构成了flag{He1Lo_mi5c~}
字符错了可以多试几次
flag{He1Lo_mi5c~}
题目叫basic-forensics,基本取证
图片打不开010看看
没有文件头,并且有许多可读字符
搜flag字符
flag{fil3_ext3nsi0ns_4r3nt_r34l}
flag{fil3_ext3nsi0ns_4r3nt_r34l}
txt文档大小为4kb但是打开却显示空白,肯定有猫腻
选中之后是这样的
010打开
16进制下数值非常规律,
用sublime打开看看(弱口令那道题也是这样的方法,可以去复习一下)
Ctrl+A全选之后,可以看到文档中的大量 “·”,这个长度不应该是摩斯密码,而且太规律了,怀疑是长的一行代表一个东西,短的一行代表一个东西,这就可以联想到二进制
把长的一行换成1,短的一行换成0看看
1.在sublime里选中长的一行(不要先选短的),复制
然后用记事本的替换,把复制的一行粘贴,替换成1,
2.1.在sublime里选中短的一行,复制
然后用记事本的替换,把复制的一行粘贴,替换成0,
结果如图所示
011101110110001101110100011001100011001000110000001100100011000001111011011010000011001101110010011001010101111100110001011100110101111101111001001100000111010101110010010111110110011001101100010000000110011101011111011100110011000101111000010111110111001100110001011110000101111101110011001100010111100001111101
然后二进制转字符
得到flag
flag{h3re_1s_y0ur_fl@g_s1x_s1x_s1x}
先用010打开图片
在最后面,发现了一点提示
aes,pngPK,可能是这个图片文件包含某个png,然后再对这个png进行AES解密
得到Tokyo.png,
老规矩,用Audacity打开分析频谱
好像也没啥东西
010看看(文件名提示Look_at_the_file_ending)
key=U2FsdGVkX1/nSQN+hoHL8OwV9iJB/mSdKk5dmusulz4=
网站
在线AES加密 | AES解密 - 在线工具 (sojson.com)
解得CCGandGulu,先放这里
最后看这个win-win.zip
需要密码,试试刚刚得到的这个,应该就是解压密码
成功提取
Audacity没找出什么东西,再用Silent Eye看看
得到flag
flag{Th1s_is_the_3nd1n9}
这么多图片拼起来好像有字(红色字迹)
下载步骤
安装montage:
#Kali Linux
apt-get install graphicsmagick-imagemagick-compat
然后慢慢等他安装就好了
安装gaps:
git clone https://github.com/nemanja-m/gaps.git
montage *jpg -tile 10x12 -geometry 200x100+0+0 out.jpg #把图片碎片合成一个图片
将目录中的jpg文件按顺序拼成x轴10块,y轴12块,每个图块大小为200x100像素,输出文件为out.jpg
montage *jpg -tile 10x12 -geometry 200x100+0+0 out.jpg
gaps --image=out.jpg --generations=50 --population=120 --size=100
#把图片碎片合成一个图片
# 将目录中的jpg文件按顺序拼成x轴10块,y轴12块,每个图块大小为200x100像素,输出文件为out.jpg
#还原原图片
//gaps --image=out.jpg --generations=50 --population=120 --size=100 #还原原图片
--image 指向拼图的路径
--size 拼图块的像素尺寸
--generations 遗传算法的代的数量
--population 个体数量
--verbose 每一代训练结束后展示最佳结果
--save 将拼图还原为图像
montage *jpg -tile 10x12 -geometry 200x100+0+0 out.jpg
打开听一听
010打开,添加文件头后仍然打不开
忽然发现第二行A1和第一行添加的00位置非常对应,A1的异或正好是00,找到方法了
把原先添加的文件头删掉
可以打开了,听到flag
flag{abcdfghijk}
flag{abcdfghijk}
随便打开几个看看
好像他们的后面都有一串东西
使用Kali工具将其提取出来
tshark -r out.pcap -T fields -e data > flag.txt
大量数据,可以看出有很多重复
with open('flag.txt', 'r') as file:
res_list = []
lines = file.readlines()
print('[+]去重之前一共{0}行'.format(len(lines)))
print('[+]开始去重,请稍等.....')
for i in lines:
if i not in res_list:
res_list.append(i)
print('[+]去重后一共{0}行'.format(len(res_list)))
print(res_list)
with open('flag1.txt', 'w') as new_file:
for j in res_list:
new_file.write(j)
输出仍然有很多行,和好像是16进制
然后将十六进制数据转为字符
脚本(只适用于python2)
import binascii()
with open('flag1.txt','r') as file:
with open('data2.txt','wb') as data:
for i in file.readlines():
data.write(binascii.unhexlify(i[:-1]))
还是网站香
在线字符串和16进制互转 - 在线工具 (bugscaner.com)
结果保存下来
首尾这两行没有用,删掉
利用记事本的替换功能,删掉 S T A R T START START
利用python将base64解码以字节流形式写成zip
import base64
with open('data.txt','rb') as file:
with open('res.zip','wb') as new_file:
new_file.write(base64.b64decode(file.read()))
利用网站(修改编码输出格式,数据量大,网站可能会卡)
得到相同的16进制数据后,打开010,在编辑里选择粘贴自16进制文本
然后打开压缩包,是一个gif文件,先用stegsolve和Kinovea打开都没有发现什么,百度才知道这是另一种隐写,叫时间隐写(真是稀奇)
Kali工具
identify -format “%T” flag.gif
得到2050这样的重复,
模仿上一题(spaceclub)的思路,把20替换成0,50替换成1,最后的4个6就忽略,得到(利用记事本这个强大的工具)
011011010100010000110101010111110011000101110100
然后把这个二进制转成字符
[在线二进制转换字符串EN] - 转换 (txttool.com)
把这个字符MD5加密
多试几次看看哪个对,试了一下,32位小写是正确答案
flag{f0f1003afe4ae8ce4aa8e8487a8ab3b6}
题目提示0;
Sublime打开,看到一些奇怪的东西
是一些零宽度字符,利用网站
Unicode Steganography with Zero-Width Characters (330k.github.io)
flag{whyNOT@sc11_4927aajbqk14}
decode被加密了
read里面是这样的
打开有提示密码
算了一下,根号后面这一串数字结果是7,那么解压密码应该就是7+NNULLULL,7代表什么呢,试了一下,不是数字7,那么应该就是位数,Archpr破解试试
(注意,?要在英文模式下输入,别忘了还有个“,”
解压打开
先放这儿
再去看那些txt文档
按照hint提示,提取什么东西的前十六个字符,先打开几个文档看看;
24内容是这样的
13
1
呃,好像也没啥思路,要不先看看那张照片吧
foremost分离
两张一模一样的图片,但是名字不一样,猜测是盲水印(虽然我也不太懂)
学习一下
(5条消息) 隐写术(盲水印):从入门到出门_guofei9987的博客-CSDN博客_文本隐写术
要是觉得太难,就看这个简单的
【CTF】图片隐写术 · 盲水印 - 双份浓缩馥芮白 - 博客园 (cnblogs.com)
具体工具
bwmforpy3.py脚本
下载网站
GitHub - chishaxie/BlindWaterMark: 盲水印 by python
用法(如果报错,比如 No module named 'matplotlib’或者No module named ‘cv2’,就在power shell窗口输入以下代码)
注意,一定是这个,不要打开终端,可能跑不出来
python -m pip install matplotlib #python3环境
pip3 install opencv-python #python3环境
如果没有报错,python3环境输入
python bwmforpy3.py decode 00000000.png 00000232.png output.png
但是运行出来是这样的
查了一下才知道,工具里有个说明:注意程序python2和python3版本的加解密结果会有所不同,主要原因是python2和python3 random的算法不同,如果要让python3兼容python2的random算法请加 --oldseed参数。
因此,加上“–oldseed”:
然后输入
python bwmforpy3.py decode 00000000.png 00000232.png result.png --oldseed
出来了
提示打开11.txt,去看看
前面有个提示,提取前16个字符,那肯定不是文本里的前16个字符,根据咱们丰富的经验(bushi),应该是字频前16
脚本跑起来
这里引用别人的代码,在此表示感谢:
import re
file = open('11.txt') #根据路径自行调整
line = file.readlines()
file.seek(0,0)
file.close()
result = {}
for i in range(97,123):
count = 0
for j in line:
find_line = re.findall(chr(i),j)
count += len(find_line)
result[chr(i)] = count
res = sorted(result.items(),key=lambda item:item[1],reverse=True)
num = 1
for x in res:
print('频数第{0}: '.format(num),x)
num += 1
前16个字符是:
即:
etaonrhisdluygwm
然后利用解压出来的decode那个文件进行替换(血泪教训)
替换出来是
QW8obWdIWT9pMkFSQWtRQjVfXiE/WSFTajBtcw==
去base64网站解码
然后再去base85网站解码
flag{have_a_good_day1}
仔细揣摩题目概述,两种伤疤,而且还有0x22,0x44这种,可以想到二进制(smart)
010打开
这后面为啥全是一样的,搜一搜看看
如果只是滑滚轮的话很可能看不到,毕竟22和44太少了(有点像一种隐写)
把这些22和44提取出来,然后利用记事本的替换,把22换成0,把44换成1,试试看
(这样选择就可以复制22和44了)
0110110000101100000011000110110010011100101011000000110010000110101011000010110010001100000111000010110001000110001001101010110001100110101001100110110001000110011011001010011010101100010001100010110011000110101001100010110011001100000111001100110001001100
接下来该干什么呢?陷入了僵局
题目又提示 (答案为32位的一串字符串),所以尝试将其转化为字符,发现是一堆无意义的东西
要不先转成16进制,(去掉空格)再转字符?
卡壳了许久之后,突然想到倒序
脚本
a = "01101100 00101100 00001100 01101100 10011100 10101100 00001100 10000110 10101100 00101100 10001100 00011100 00101100 01000110 00100110 10101100 01100110 10100110 01101100 01000110 01101100 10100110 10101100 01000110 00101100 11000110 10100110 00101100 11001100 00011100 11001100 01001100"
a = a.split()
flag = ''
for i in a:
flag += chr(int(i[::-1],2))
print (flag)
6406950a54184bd5fe6b6e5b4ce43832
再转字符(我怕我是傻了)
这不就是flag吗?
flag{6406950a54184bd5fe6b6e5b4ce43832}
在下面发现了一串可疑字符
放到010里看看
复制下来,去转字符
好像不是,再回去找找其他的
又发现了这个
看来flag与Base64编码有关,那么怎么才能得到呢?
可以利用base16转成base64,然后base64又可以转成字符,就这么干
又找出来2个base16字符串
复制到010
但是第一个解出来啥都没有
再解解第二个
看来有戏,但是解了一下没出来什么东西,还提示编码有误
看了看才发现,他这个地方有点问题
正常的==应该在最后,把他逆序一下
wIDIgACIgACIgAyIK0wIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMiCNoQD
jMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjoQDjACIgACIgACIggDM6EDM6AjMgAzMtMDMtEjM
t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0iCNMyIjMyIjMyIjMyI
6AjMgAzMtMDMtEjMwIjO0eZ62ep5K0wKrQWYwVGdv5EItAiM1Aydl5mK6M6jlfpqnrQDt0SLt0SL
t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLK0AIdZavo75mlvlCNMTM6EDM
z0yMw0SMyAjM6Q7lpb7lmrQDrsCZhBXZ09mTg0CIyUDI3VmbqozoPW+lqeuCN0SLt0SLt0SLt0SL
sxWZld1V913e7d2ZhFGbsZmZg0lp9iunbW+Wg0lp9iunbW+Wg0lp9iunbW+WK0wMxoTMwoDMyACM
DN0QDN0QDlWazNXMx0Wbf9lRGRDNDN0ard0Rf9VZl1WbwADIdRampDKilvFIdRampDKilvVKpM2Y
==QIhM0QDN0Q
#正常情况应该是XXX==这种,所以逆序一下试试,注意是每行逆序才能得到标准的XXX==
然后建一个脚本:
a='wIDIgACIgACIgAyIK0wIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMiCNoQD'
b='jMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjoQDjACIgACIgACIggDM6EDM6AjMgAzMtMDMtEjM'
c='t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0iCNMyIjMyIjMyIjMyI'
d='6AjMgAzMtMDMtEjMwIjO0eZ62ep5K0wKrQWYwVGdv5EItAiM1Aydl5mK6M6jlfpqnrQDt0SLt0SL'
e='t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLK0AIdZavo75mlvlCNMTM6EDM'
f='z0yMw0SMyAjM6Q7lpb7lmrQDrsCZhBXZ09mTg0CIyUDI3VmbqozoPW+lqeuCN0SLt0SLt0SLt0SL'
g='sxWZld1V913e7d2ZhFGbsZmZg0lp9iunbW+Wg0lp9iunbW+Wg0lp9iunbW+WK0wMxoTMwoDMyACM'
h='DN0QDN0QDlWazNXMx0Wbf9lRGRDNDN0ard0Rf9VZl1WbwADIdRampDKilvFIdRampDKilvVKpM2Y'
i='==QIhM0QDN0Q'
print(a[::-1])
print(b[::-1])
print(c[::-1])
print(d[::-1])
print(e[::-1])
print(f[::-1])
print(g[::-1])
print(h[::-1])
print(i[::-1])
#耐心一点,正确分行
逆序后再转一下看看
哇,终于出来了,去重一下
flag{Welc0me_GkC4F_m1siC!}
(注意,下划线_不要漏了)
或者利用栅栏密码网站,调整一下{}的位置就好了
这道签到题好难啊!!!
flag{Welc0me_GkC4F_m1siC!}
DBAPP是什么意思呢?
打开文档
既然已经损坏,用010打开看看
A中发现了这个
B
C里发现了DBAPP字符
最后看看D
那C里的字符是最可疑的,尝试修复一下C文件看看,
49436F6D6546726F6D44626170706168
从上面我们可以知道,这几个word文档缺少文件头,加上看看能不能打开
加上 504B0304之后,还是打不开
利用zip文件头和word相同这一特点,把它改成zip看看
打开后还是没有什么东西,用binwalk分离一下
还是没有,看来前面的思路不太对,再用用其他的修复方式
把C里面IcomefromDBAPP那几个不一样的字符全部改成周围的字符一样看看(删去前面添加的文件头)
哇,终于打开了
可是接下来该干什么呢?没有思路了
忽然这个文档的发现行间距不一样,
把1.5倍的看成1,1.0倍的看成0试试
得到
100100100001
MD5在线加密 - 站长工具 (chinaz.com)
32位小写
d473ee3def34bd022f8e5233036b3345
flag{d473ee3def34bd022f8e5233036b3345}
导出HTTP文件,
%20%43%46%49%7b%31%6e%73%33%63%75%72%33%5f%6c%30%67%30%6e%7d%20
去掉百分号后:
204346497b31637333637572335f6c3067306e7d20
base16转字符;利用网站或直接搞到010里
利用python
print(‘%20%43%46%49%7b%31%6e%73%33%63%75%72%33%5f%6c%30%67%30%6e%7d%20’.replace(‘%’,‘’)) #去掉%
import binascii
binascii.a2b_hex(‘204346497b316e7333637572335f6c3067306e7d20’) #转字符
flag{1cs3cur3_l0g0n}
文件叫这是什么类型的文件,并且题目是hashcat,应该和哈希有关
010打开
文件头没有搜到,看看文件尾
也没搜到文件尾的信息,用虚拟机的binwalk看看
XML文件,也就是数据文件,可以用Excel打开
添加后缀.xml,打开,有密码
爆破
使用Accent OFFICE Password Recovery破解密码,
下载地址https://url82.ctfile.com/f/26363582-542017838-b06171(访问密码:6878)
没有给密码提示,那就暴力破解,纯数字,2-6位差不多
密码9919,解压打开
这个有点可疑
标黑看看
得到flag
还给了一个MD5的小结,有良心
修改后缀后(比如pptx),利用office2join.py命令得到哈希值
需要先安装这个脚本
参考这个文章安装
How to Crack Password-Protected Microsoft Office Files, Including Word Docs & Excel Spreadsheets « Null Byte :: WonderHowTo
然后输入命令:
python office2john.py 20-1.pptx > hash.txt #把由这个文档得到的哈希值存储到hash.txt中
flag{okYOUWIN}
题目的原本描述是这样的:
截获了一台电动车的钥匙发射出的锁车信号,3分钟之内,我要获得它地址位的全部信息。flag内容二进制表示即可。
audicity打开,观察频谱图
然后查一查这是什么协议
观察频谱图,一细一粗,把细的换成0,粗的换成1,(只看前面这一段就好,别漏了最初的0)
0/011101001010101001100(这个0有点奇怪,多出来一位)/0100
地址位:01110100101010100110
知识点:
参考这篇文章
https://www.freebuf.com/articles/wireless/191534.html
PT2242信号:前面4bit表示同步码,中间的20bit表示地址码,后面的4bit表示功能码,最后一位是停止码。
flag{01110100101010100110}
010打开
隐藏着压缩包,binwalk分离
竟然如此简单,菜鸟狂喜
flag{7h475_4c7u4lly_r34lly_cu73_7h0u6h}
010看看这几张图片
furan.jpg文件尾后面有一串未知字符
miku后面也有
setsuna
而且分别是part2,part3,part1,把它们用binwalk-e命令分离一下
得到一个加密的压缩包,
爆破行不通
再分离其他两个jpg看看
随便找个二维码把左上和左下的小方块给裁下来拼到这个图片上,利用画图工具就可以
QR-reasarch扫不出来,就用微信扫一扫
得到:
KFBVIRT3KBZGK5DUPFPVG2LTORSXEX2XNBXV6QTVPFZV6TLFL5GG6YTTORSXE7I=
很长时间没有接触base32编码了,一下子没反应过来
解码
Base32编码解码,Base32在线转换工具 - 千千秀字 (qqxiuzi.cn)
flag{Pretty_Sister_Who_Buys_Me_Lobster}
png格式,010打开
修改高度无果,搜索PK发现zip数据
binwalk -e分离
打开这里面的zip
未知格式,010打开,搜索flag(根据hidden提示)
这里面有一些奇怪的字符,删掉
得到
flag{2fbe9adc2ad89c71da48cabe90a121c0}
binwalk分析这个hidden_binary文件
elf文件,百度
kali可以直接运行,挺好
这个方法更快
flag{2fbe9adc2ad89c71da48cabe90a121c0}
flag{Youre_sane_Good_for_you}
audacity打开音频
突然就没有思路了。。。
binwalk分离
也没有什么东西,那应该是隐写了
steghide extract -sf out.wav
无密码
Firefox浏览器能打开,edge竟然打不开
打开
010打开
文件头损坏,改成47
\u0034\u0030\u0037\u0030\u000d\u000a\u0031\u0032\u0033\u0034\u000d\u000a
unicode编码,转换一下
Unicode编码转换 - 站长工具 (chinaz.com)
数学题1,加起来等于5304,哦,这就是flag
flag{5304}
viop百度
哇,那应该和电话有关
打开之后,有一段音频
播放
声音很诡异,我愣是没听出来,提交都是错的
正确的flag:(俺也不知道咋听出来的,离谱)
flag{9001IVR}
flag{9001IVR}
删掉链接后面的无用字,再打开链接,如果自动的跳转到其他页面,就在加载的时候点一下这个
这个题很坑,我看了半天文章没找到什么信息,结果flag竟然藏在点赞的人里
打开这个出题人的主页,发现了
base64
evL5S5J+a5HzxAKR8xXiUXPUd1LDKPYYNHSjN6ZF8i0=
接下来就不会做了,百度别人的wp都没有说怎么做
flag{31010419920831481363542021127}
哈哈哈,点开评论太有意思了
flag{31010419920831481363542021127}
010打开,显示结尾有错误
题目缩写BPG,直接搜索BPG
百度
从来没见过
把这些数据存下来
下载个软件打开这个bpg
BPG Image format (bellard.org)
下载后把bpg图片拖到bpgview.exe中(直接打开bpgview.exe会出错)
YnNpZGVzX2RlbGhpe0JQR19pNV9iM3R0M3JfN2g0bl9KUEd9Cg==
base64,转换一下
得到flag
flag{BPG_i5_b3tt3r_7h4n_JPG}
flag{BPG_i5_b3tt3r_7h4n_JPG}
010打开这几张图片
先简单分析一下这几张图片
从外观上,1.png明显高度太低,需要更改
2.png末尾有疑似其他文件的名称
3.png暂时没发现什么东西
4.png末尾有一串不明base64
cExlX1BsY
5.png末尾也有一串base64字符和提示性话语
Yzcllfc0lN
然后再开始深入分析1.png
简单修改高后打开
仍然没有什么信息
那来个专业的脚本看一下它原来的宽高是多少
import zlib
import struct
filename = '1.png'
with open(filename, 'rb') as f:
all_b = f.read()
crc32key = int(all_b[29:33].hex(), 16)
data = bytearray(all_b[12:29])
n = 4095
for w in range(n):
width = bytearray(struct.pack('>i', w))
for h in range(n):
height = bytearray(struct.pack('>i', h))
for x in range(4):
data[x + 4] = width[x]
data[x + 8] = height[x]
crc32result = zlib.crc32(data)
if crc32result == crc32key:
print("宽为:", end="")
print(width)
print("高为:", end="")
print(height)
按照这个数据给改一下
再打开
继续分析
使用工具pngcheck检查IDAT
下载地址:
pngcheck Home Page (libpng.org)
命令:
pngcheck.exe -v 1.png
显示有错误,010再打开1.png,
很明显,这两和其他人不一样
chunk2和chunk3的CTYPE缺少IDAT字样,给加上(在16进制数据里改)IDAT的十六进制标识为49 44 41 54
改好后再打开
按照它原来的模样猜测有二维码
stegsolve打开
QR-reasearch扫描
哦耶,又找到一个线索
ZmxhZ3s0X3
再看2.png,按照前面的分析,2.png里应该藏有其他文件的数据,但是并没有找到zip之类压缩包的数据
会不会藏有其他格式的压缩包呢?搜一下看看
在搜索7Z时,有了一点线索
哈哈,笑死我了,出题人为了咱们能找到7Z竟然加了2000多个7Z,也不忘记加上个nothing here,有心了
这些7Z后面要么是03 04 要么就是01 02,这不妥妥的zip数据的模样吗?把7Z全部改成PK
然后binwalk分离
打开
得到了999的txt究竟谁是最特殊的那个呢?
按照大小排序,618.txt最大,打开
哦耶,第二个线索
1RVcmVfc
或者直接搜索find,这样更简单,但是不好才到关键词是find
010看3.png,会发现,除了chunk7的CRC是正常的长度,其他的都不正常,太短了
把这6个crc保存下来,是
33 52 6C 5A 33 30 3D
然后放010里
哦耶,线索3
3RlZ30=
把5条线索集中到一起
1-5分别是
ZmxhZ3s0X3
1RVcmVfc
3RlZ30=
cExlX1BsY
Yzcllfc0lN
然后我就按照1-5的顺序直接解,结果不行???
排序,3肯定在最后,
1的解码
2解不出来
4
5也解不出来,
1开头,3结尾,4中间,那只有2种可能
12453或15423,试了一下15423的顺序正确
ZmxhZ3s0X3Yzcllfc0lNcExlX1BsY1RVcmVfc3RlZ30=
终于做出来了!!!
flag{4_v3rY_sIMpLe_PlcTUre_steg}
直接解压www.zip,出了一个o_o文件,O_O是pyc文件,题目名称叫剑龙
借一段话,转自
一文让你完全弄懂Stegosaurus - Angel_Kitty - 博客园 (cnblogs.com)
简单来说, pyc 文件就是 Python 的字节码文件,是个二进制文件。我们都知道 Python 是一种全平台的解释性语言,全平台其实就是 Python 文件在经过解释器解释之后(或者称为编译)生成的 pyc 文件可以在多个平台下运行,这样同样也可以隐藏源代码。其实, Python 是完全面向对象的语言, Python 文件在经过解释器解释后生成字节码对象 PyCodeObject , pyc 文件可以理解为是 PyCodeObject 对象的持久化保存方式。而 pyc 文件只有在文件被当成模块导入时才会生成。也就是说, Python 解释器认为,只有 import 进行的模块才需要被重用。 生成 pyc 文件的好处显而易见,当我们多次运行程序时,不需要重新对该模块进行重新的解释。主文件一般只需要加载一次,不会被其他模块导入,所以一般主文件不会生成 pyc 文件。
pyc文件破解需要密码,先放在这里,去寻找密码
www.zip解压后是一个hint.zip,010查看发现藏着其他压缩包,
打开图片
打开pwd.txt
CTF在线工具-在线AAencode编码|AA编码|AAencode解码|AAencode编码原理|AAencode编码算法 (hiencode.com)
welcom3!
再看看图片,
不是LSB隐写,有密码,可能是steghide隐写
隐写工具Steghide - 简书 (jianshu.com)
Steghide是一个可以将文件隐藏到图片或音频中的工具
下载地址:
Find out more about steghide | SourceForge.net
命令
./steghide.exe extract -sf hh.jpg
想要flag吗?解出我的密文吧~
U2FsdGVkX1/7KeHVl5984OsGUVSanPfPednHpK9lKvp0kdrxO4Tj/Q==
再找密码
@#$%^&%%$)
解密网址
在线DES加密 | DES解密- 在线工具 (sojson.com)
回到前面那个O_O.pyc的文件,使用反编译工具stegosaurus
下载地址
AngelKitty/stegosaurus: A steganography tool for embedding payloads within Python bytecode. (github.com)
python stegosaurus.py -x O_O.pyc
python版本为3.7.9
flag{3teg0Sauru3_!1}
010打开
zip开头,kali binwalk 分离
都是一些xml文件,打开看看没啥东西,再回去看看excel表格
excel据说有个好玩的点:
如果单元格类型为“;;;”时,excel会隐藏单元格中的数字
随便打开几个单元格,会发现有的值为1,却没显示,有的值为空,联想以前做过的一道题,猜想可能是1与0转换成图形
MRCTF[2020]Hello_misc
Ctrl+F找到所有值为1的单元格,然后替换成黑色的单元格(根据1的值地域分布不连续推测不会直接是flag字样,而可能是二维码)
替换完成
修改一下单元格的宽,使之近似为正方形
这样子应该差不多
这个二维码看起来有点奇怪,微信扫不出来,网上一查这叫汉信码, 打开中国编码网下载对应app,
软件下载 (ancc.org.cn)
也可以直接扫描这个二维码下载
扫码得到flag,flag{9ee0cb62-f443-4a72-e9a3-43c0b910757e}
flag{9ee0cb62-f443-4a72-e9a3-43c0b910757e}
听了一下没有什么东西,那就用audacity打开看看
打开是这个东西,这是什么意思?
看看频谱
似乎有什么信息,但是看不清
silenteye打开没有加密信息
百度一下题目名称
看来又是一种新的东西
spectogram分析博客
(9条消息) 211130-Python谱图(Spectogram)分析Demo_GuokLiu的博客-CSDN博客_demo谱分析
下载声波可视化器 (sonicvisualiser.org)
下载后打开文件,在layer里添加spectogram,看到隐藏信息
flag{sp3trogr4mophon3}
欸,这个不对哦,仔细看这个类似o的比m高,所以应该是数字0,又是个坑
flag{sp3tr0gr4m0ph0n3}
flag{sp3tr0gr4m0ph0n3}
又是一道wav隐写题目
audacity打开看波形,竟然是一道平的
看看频谱
百度题目名称SSTV
好眼熟,好像在哪里见到过(想了一下,原来是高中时候的阅读理解)
搜了一下,QSSTV这个玩意可以解码
apt-get install qsstv
下载好后,在终端输入qsstv,系统自动打开qsstv,然后点击Options->configuration->sound->sound input->from file
点击OK,然后点击这个按钮,选择要解码的文件,然后就开始解码啦
flag{6bdfeac1e2baa12d6ac5384cdfd166b0}
BUU上少了题目描述
One day,you and your otaku friend went to the comic expo together and he had a car accident right beside you.Before he died,he gave you a USB hard disk which contained this zip.Please find out his last wish.
提示:The txt is GBK encoding.
010打开
藏着其他的zip,kali分离
爆破无果,去前面那个docx文档里寻找线索
很明显,这个文档隐藏了一些内容
在搜索框里搜索显示/隐藏编辑标记,显示出隐藏的内容
对比发现,隐藏的内容为:
Hello everyone, I am Gilbert. Everyone thought that I was killed, but actually I survived. Now that I have no cash with me and I’m trapped in another country. I can't contact Violet now. She must be desperate to see me and I don't want her to cry for me. I need to pay 300 for the train, and 88 for the meal. Cash or battlenet point are both accepted. I don't play the Hearthstone, and I don't even know what is Rastakhan's Rumble."
利用记事本的替换功能
Hello everyone, I am Gilbert. Everyone thought that I was killed, but actually I survived. Now that I have no cash with me and I’m trapped in another country. I can't contact Violet now. She must be desperate to see me and I don't want her to cry for me. I need to pay 300 for the train, and 88 for the meal. Cash or battlenet point are both accepted. I don't play the Hearthstone, and I don't even know what is Rastakhan's Rumble."
然后联想刚刚那个加密压缩包里的last words.txt,猜想是明文攻击,把这段文字改成GBK编码(BUU上漏掉了这一个关键性的提示)
# -*- coding:GBK -*-
f = open('flag1.txt','w')
s = "Hello everyone, I am Gilbert. Everyone thought that I was killed, but actually I survived. Now that I have no cash with me and I’m trapped in another country. I can't contact Violet now. She must be desperate to see me and I don't want her to cry for me. I need to pay 300 for the train, and 88 for the meal. Cash or battlenet point are both accepted. I don't play the Hearthstone, and I don't even know what is Rastakhan's Rumble."
f.write(s)
f.close()
打开转换后的GBK文件
这里有个疑问,为什么文件内容没有变化?
然后把flag1.txt压缩为zip,然后观察CRC校验码和前面那个flag.zip的是否一样(这个真没想到)
确实是一样的,那就开始明文攻击(打开的文件是加密的文件,明文文件是刚刚flag.txt压缩后的zip)
解压
txt文件和前面那个txt文件内容一样,010打开图片没发现什么东西
看看是不是LSB隐写
(查看PNG和BMP文件隐藏信息的工具)
flag{vI0l3t_Ev3rg@RdeN}
文件类型是光盘映像文件,百度一下IMG文件
010打开
这是一种新的题型,要用到另一个内存取证工具:
下载地址:(我下载的版本2.6)
Release Downloads | Volatility Foundation
然后把刚刚那个memory.img文件放到解压之后的文件夹里
我把程序名字稍微改了一下,只要输入的和存在的同名就行
打开终端,输入
./volatility.exe -f memory.img imageinfo
可以看到,profile是Win2003SP1x86
./volatility -f memory.img --profile=Win2003SP1x86 pslist
看完镜像直接查看这个镜像上有那些进程正在运行 pslist应该比较好理解就是进程的列表的意思。
可以看到有许多exe文件,并且最后一个用过的程序名字还是DumpIt这个敏感的名字,
./volatility -f memory.img --profile=Win2003SP1x86 cmdscan
发现flag字符,继续
./volatility -f memory.img --profile=Win2003SP1x86 memdump -p 1992 --dump-dir=./
产生一个1992.dmp文件,010打开
没发现什么东西,
打开有好多东西
打开分离出的文件
png
第一个扫码:
jfXvUoypb8p3zvmPks8kJ5Kt0vmEw0xUZyRGOicraY4=
第二个扫码:
内容是一样的
打开有字符的图片
iv是偏移量,有key有字符,有偏移量,是AES加密
jfXvUoypb8p3zvmPks8kJ5Kt0vmEw0xUZyRGOicraY4=
key:Th1s_1s_K3y00000
iv:1234567890123456
在线AES加密解密、AES在线加密解密、AES encryption and decryption–查错网 (chacuo.net)
flag{F0uNd_s0m3th1ng_1n_M3mory}
flag{F0uNd_s0m3th1ng_1n_M3mory}
只有一张图片,010打开
结尾发现zip,binwalk分离(foremost分离出一堆没用的照片)
安卓逆向介绍
Android逆向 - 简书 (jianshu.com)
1.apktool——可以反编译软件的布局文件、图片等资源,方便大家学习一些很好的布局;
2.dex2jar——将apk反编译成java源码(classes.dex转化成jar文件);
3.jd-gui——查看APK中classes.dex转化成出的jar文件,即源码文件。
apktool(选最新版)
iBotPeaches / Apktool / Downloads — Bitbucket
然后把这个网址里的东西复制粘贴保存为apktool.bat,和上面下载的apktool.jar放在同一个目录下
https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat
安装工具dex2jar2.0
Download dex2jar from SourceForge.net
下载jd-gui(我下载的win版)
程序:
Java Decompiler (java-decompiler.github.io)
jar文件
java-decompiler/jd-gui: A standalone Java Decompiler GUI (github.com)
把class.dex文件放到dex2jar目录下,打开终端,输入
./d2j-dex2jar.bat classes.dex
然后会生成一个jar文件
或者直接把class.dex文件拖到d2j-dex2jar.bat上面,也能生成这个文件
然后把这个jar文件用jd-gui.exe打开
不难看到flag(我近视都能发现,你不会看不到吧?)
flag{25f991b27f" + i + "dc2f7a82a2b34" + j + "86e81c4}
i和j代表题目中要我们爆破的字母和数字
多试几十次之后,得到flag
flag{25f991b27fcdc2f7a82a2b34386e81c4}
flag{25f991b27fcdc2f7a82a2b34386e81c4}
这不秒得flag?
flag{YouRe_Crazy_and_I_Love_it}
wireshark打开
追踪TCP流,总共有大约90个流,一个个的看一看,在18发现了ssc key
紧接着,在19发现了私钥
先把私钥存下来
继续看看剩下的几十条流,没有什么线索
分析文件猜测,这应该在向ftp
服务器传送私钥,我们得到了私钥,就可以解密TLS报文,
具体步骤:
编辑->首选项->protools->TLS->edit->点击±>添加key.txt
下拉,找到TLS
然后继续追踪TLS流,会默认出来tcp.stream eq80/81 发现flag
flag{OkThatWasWay2Easy}
签到题
flag{Welcome}
flag{Welcome}
签到题
flag{Youre_crazy_I_like_it}
flag{Youre_crazy_I_like_it}
扫一扫看看
内容是一个网址
https://cn.bing.com/search?q=key%E4%B8%8D%E5%9C%A8%E8%BF%99%E9%87%8C&m=10210897103375566531005253102975053545155505050521025256555254995410298561015151985150375568&qs=n&form=QBRE&sp=-1&sc=0-38&sk=&cvid=2CE15329C18147CBA4C1CA97C8E1BB8C
这个网址是搜索"key不在这里",用bing随便找个搜索key这个单词的网址对比一下看看有什么不同
正常:
https://cn.bing.com/search?q=key&qs=n&form=QBRE&sp=-1&pq=ke%27y&sc=8-4&sk=&cvid=5C1A3D12026745D28A50BB2341A4B04D
题目:
https://cn.bing.com/search?q=key%E4%B8%8D%E5%9C%A8%E8%BF%99%E9%87%8C&m=10210897103375566531005253102975053545155505050521025256555254995410298561015151985150375568&qs=n&form=QBRE&sp=-1&sc=0-38&sk=&cvid=2CE15329C18147CBA4C1CA97C8E1BB8C
(绿色代表共同点,红色标出的就有点不正常)
10210897103375566531005253102975053545155505050521025256555254995410298561015151985150375568
数了一下,一共有92个数字,而且f的ascii码值为102,l的ascii码值为108,接下来把这一串ascii码转成字符
python的chr()函数
ascii转为字符
s = '10210897103375566531005253102975053545155505050521025256555254995410298561015151985150375568'
temp = ''
while len(s):
if int(s[:3]) < 127:
temp += chr(int(s[:3]))
s = s[3:]
else:
temp += chr(int(s[:2]))
s = s[2:]
print(temp)
flag%7B5d45fa256372224f48746c6fb8e33b32%7D
%7B和%7D分别是是URL编码中的”{“和“}”
flag{5d45fa256372224f48746c6fb8e33b32}
百度一下取模运算(数学不好)
2的19260817次方>0,1e9+1也大于0,所以flag就是2的19260817次方除1e9+7的余数
1e9+7=100000007,代码敲起来
C或C++可能需要好久才能跑出来结果,不如万能的python,几秒就跑出来了
a=2
for i in range(19260816):
a = a * 10 + 2
a%=(1e9+7)
print(a)
577302567.0
去除小数点,flag{577302567}
flag{577302567}
010打开,数据比较正常
仔细看,这里好像有个二维码的一角
不是LSB隐写,不是CRC隐写,binwalk也没有,就没有什么思路了
百度大佬的wp,又有一个新的脑洞,这个小角是11x6的长方形,把黑色小块当作1,白色小块当作0,如下:
00110001001
10010001100
11001101000
01101010011
01100011011
10011100000
然后把它们连起来
001100010011001000110011001101000011010100110110001101110011100000
然后二进制转字符
网站
汉字二进制转换器,字符与2-36进制相互转换 - 千千秀字 (qqxiuzi.cn)
python脚本
s = '001100010011001000110011001101000011010100110110001101110011100000'
def bin2asc(string):
temp = ''
for i in range(int(len(string) / 8)):
temp += chr(int(string[i * 8: i * 8 + 8], 2))
print(temp)
return
bin2asc(s)
flag{12345678}
两张一摸一样的图片。猜测是盲水印,这是以前做过的一道盲水印的题
但是这个方法不适用于这次的盲水印,原来这是频域盲水印,那就换一个方法吧
借鉴一下大佬的脚本
# coding=utf-8
import cv2
import numpy as np
import random
import os
from argparse import ArgumentParser
ALPHA = 5
def build_parser():
parser = ArgumentParser()
parser.add_argument('--original', dest='ori', required=True)
parser.add_argument('--image', dest='img', required=True)
parser.add_argument('--result', dest='res', required=True)
parser.add_argument('--alpha', dest='alpha', default=ALPHA)
return parser
def main():
parser = build_parser()
options = parser.parse_args()
ori = options.ori
img = options.img
res = options.res
alpha = options.alpha
if not os.path.isfile(ori):
parser.error("original image %s does not exist." % ori)
if not os.path.isfile(img):
parser.error("image %s does not exist." % img)
decode(ori, img, res, alpha)
def decode(ori_path, img_path, res_path, alpha):
ori = cv2.imread(ori_path)
img = cv2.imread(img_path)
ori_f = np.fft.fft2(ori)
img_f = np.fft.fft2(img)
height, width = ori.shape[0], ori.shape[1]
watermark = (ori_f - img_f) / alpha
watermark = np.real(watermark)
res = np.zeros(watermark.shape)
random.seed(height + width)
x = range(height / 2)
y = range(width)
random.shuffle(x)
random.shuffle(y)
for i in range(height / 2):
for j in range(width):
res[x[i]][y[j]] = watermark[i][j]
cv2.imwrite(res_path, res, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
if __name__ == '__main__':
main()
把这个文件存为blind watermask.py,
pip install opencv-python==4.2.0.32 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
在当前目录下打开终端,输入命令:
python2 blindwatermark.py --original --huyao.png --image stillhuyao.png --result output.png
python2 blindwatermark.py --original huyao.png --image stillhuyao.png --result res.png
python2 blindwatermark.py --original huyao.png --image stillhuyao.png --result out.png
python encode.py --image huyao.png --watermark stillhuyao.png --result out.png
pip install --target=/home/xxxx/anaconda3/envs/huayan/lib/python3.6/site-packages opencv-python==4.2.0.34 -i https://pypi.doubanio.com/simple
python encode.py --image huyao.png --watermark stillhuyao.png --result put.png
python decode.py --original huyao.png --image stillhuyao.png --result put.png
python2 water2.py --original huyao.png --image stillhuyao.png --result out.png
仔细观察协议,再ICMP下发现一些base64字符
Q1RG
e0p1c3RB
UzBuZ0Fi
MHV0UDFu
Z1Awbmd9
一共有这些(注意重复)
Q1RG/e0p1c3RB/UzBuZ0Fi/MHV0UDFu/Z1Awbmd9/
Q1RGe0p1c3RBUzBuZ0FiMHV0UDFuZ1Awbmd9
找个网站解base64
flag{JustAS0ngAb0utP1ngP0ng}
我还真不知道APNG是啥,百度
chrome安装apng插件后可以打开
是一个短的动画,并且隐藏着一个二维码,chrome没法编辑,那就用另一个新工具吧
apng图片分割器-APNG图片分解器(APNG Disassembler)下载v2.7 绿色版-绿色资源网 (downcc.com)
打开文件,会自动分解,真不错
得到了4张二维码
1
2
3
4
第一张有点问题,需要借助强大的PS扭曲一下(使劲拉,一次不行再弄一次)
搞得差不多就可以扫出来了
第2张扫码
-9b9d
第3张扫码:
-ad20
最后一个
拼起来就是
flag{a3c7e4e5-9b9d-ad20-0327-288a235370ea}
这里有一个地方需要注意,如果直接用kinovea打开或potplayer逐帧查看,非常难发现第2张二维码(别问我怎么知道的,不信你可以试试看)
flag{a3c7e4e5-9b9d-ad20-0327-288a235370ea}
搜索CTF(或者RCTF),得到第一部分flag
ctf{unseCure_quick_form4t_vo1ume
然后7Z打开,很神奇的得到了一个fat文件,这我属实是没想到
FAT文件就可使用VeraCrypt进行挂载,VeraCrypt下载地址
Download VeraCrypt from SourceForge.net
因为密码没有什么线索,所以考虑最简单的rctf或者题目名称,密码是rctf,然后出现这个:
然后打开挂载的E盘
(原先电脑里并没有,是新建的)
打开password.txt
图片名暗示先忽略图片线索,并且password中出现了另一个密码,这就有意思了
这是一个容易忽视的点。那就是在挂载的时候,不同的密码可以进入不同的文件系统
然后又创建了一个磁盘,奇怪的是无法打开,必须格式化(坑),010也打开驱动器也打不开
搜了一下,原来这代表磁盘被加密了,牛
winhex可以打开,具体步骤:
可能会报错,不用在意,它还是可以打开
随便一拉就看到了flag的另一半(狗头)
_and_corrupted_1nner_v0lume}
这里有一个弯路,就是直接打开磁盘的时候会提示必须格式化才能继续使用嘛,这个时候千万不要格式化,一旦格式化了这个磁盘名字就无法继续使用了,必须换一个,我就是格式化之后有建了一次,结果打开就是这个样子:
flag{unseCure_quick_form4t_vo1ume_and_corrupted_1nner_v0lume}
根据题目名称frequency与文件内容猜测应该是字频方向
如果打开文档是空白的,就搜索
a2draGxmY290bnRpdWZwZ2hodGN3dWprY2ttb3ducGNrbXdseWd0bHBtZmtneWFhaWh1Y2RsYXRveXVjb2lnZ3JwbGt2a2Ftcmt0cXp4ZW1taXdrbGh1YWVrY2VvbHBvY2ZtdGFobWdmbWF2YWpuYmNwbWx0anRwdWZqY2FwY3RvanBqYmZmYmpid2h1YWxnZ3lqbmFtY2JmeWFjamJheGtpeGxtbXFpa3NtcHRxeW9qZXJ0ZmVrdGR4ZHh4YnRyeGNhbmd5bXNpbWh2dXdrdGV4c2dscnRwZ2FrdGJtZnVjZ3ZubXRqdWZvZWt5bXRsaW14ZGlqanB4eWl0YWJwbWt1Y2NubGtwb2V0Z2NkY3Bvc2tpenZ5eHJ0enhyYXh0bm9paHFjeGZvYWFhbHBhanlja2VrYnljZnZqb21sbGthamd5bWdmZGNycGVxa2xmc2NtZWppY3BqaWtjcHBhY3h5ZXZma3ljcHBia2R6Y2ZsbGlrcW5pdGNrYmhqb3JuZGhzb21mdHlwYWhwcW94cnlpbWhmbGNoY21rb3JldG1yb3RrYXJjanRobWZ0aWxpam55a3V0aWhienR0dW1zbmdmdGxtcmJmZmx0ZndjbmptZmF0bGZiemxva3RscHBsbWZpY29rcHBucGFjbWZ1Z21wdW5kdnRvbXdldmNqc2dhamdmZXF1dXBhaWV0eW5mamJicGpzbHZ5bmFmdG1scHBka3R0b2Z1emppanhpdGJmaXJtb3ZwemVraXJic2Zqc2d6bHVrb2x5dm9obXZnY3BrdGhzeGZ6bW1ibm1sZHp5dWljZHZrbXpiYXlidG9yY2ZvdHRkYW1jY25iYXBucmd4bGN5cGh5Zm5jZXhidmRubG9rZ295aWxwcmxvbnNodGNranR4bmFiamhsbWJwZGNtaGtqbmxnbXRnam5qYWtyaXpsbHBtbWFscHhhbXVuaW51cGtwZGlhcHNzbXZrZGp2Z2l5b2R1bXBuYXBsamtqYmNmaHRoc2tpb2twZ3R0eWhubmRzeGtxanp2dmRvc2VwcG9pZ3l0bW5uYXZjdG9wZHlpeHZiZG9zb2JtY3ViaXVhanhoeWZrdnJremdjdXlpbHB2YXdheW5xYWFwbGJrd2lpeHJjdGN0bGt4ZmpscGVhbW1qbmF1amNvdWlmbXZpa2ZpbXJvYXF0Y3RjZm1hdWJnYWdva2FyZnFmaGVtb3NydHlmb3B1a3VkY2FhaW1oZGZvZ25oa3JjZWxwY2F0Y3RweWpsYXZva2xnY2xhdGx0bXR6eWdwZWhma3poY3R6bmdtb2ZjaXpsdm54dG5sdWFqbHRvdmNqYWp1YnphdHBlaGhma25uZ2dwbHlsaXZmZWFpZHJteWp0YWNhbXhjbmtmeXN0d2ZuZmx5bmJta2NrYXJ4YWlzcGpsa3ZjdHZrbHh1bmNmcGJ4dmlyaXFleXBtdXZ1bHZsamNrY3lwcHRwdmV0b3hobWlwYmlsbmplb3drd3VjdG9rbmFmcHdvYXBmdGNsemhwaHhjY2F0dGh1bXZ3aHpvbWFmd3Fxbmxzb3lhYnV0bHpwaWF0Zm1tYWprcmR2bGN6d2pwc3Nwb2FiaWZpcGhrb2NocHRrYXRrYWZlb255YmZpdmVjbGR6b2ZhdGV0Z2FsaGFmYW1vYXlvc291bm5hZmlhdGNqdGl3b29sYWNya2N1YWRwdXRreWxweXBiZ2ZlcHdwc25jd2tjd2xsYXJ5anNjYW5id3BkcHpicHR1dG5sbm9wd3BpdGJsb3RsbHppZmtsYWF1cmpwaWFqZnB0a2ZteHBic3VjdmpzZ21jYWxhbnRyc2NrYmt1eWZnYWFrZmFjbmxkdXZxZXR5amdqbW5hZWFjbmdheGNuYW1qbWlna2tpdW1sbmR3Y2ttdWFuYW52cnJiZnp4enl1dWVob25lbWxjanp1dm9hanVmZGdqamp
jZ21ucHRmdXVjdWJjdGpoYW1sb2xmaG9pZnZia2themNwb3pjeXVjYnJnb2picG5haGNneXV0dGR2bXR0dndqbWhic2ptYmJhdmNkbHlob3Fqb21wY3B2aHRrb2FpcnZ0bWtmZnlhdGttcHR1dW9vb2xncG5udWVsaGZodnZpc3Vrd3lubWlhY25sbHVtaHRqZWt1YXV1cGxyeGtpZXB1anhsaWNma2NiY2htbmdsZ3BsaWhteWNybnNvbWF3dWZ1b29tdXVuaGRvb2FydWRhbW9hbW9ocW9vY2Z1cGp1aWFieHh1dnl2bm9zb3Vvb3Zha2xjZmt0eXJmYWdmYXl2cHVmdnBiZ3RhZmVraXBpY292dGZ0bnV4c2phdmpkcWt2ZnVpa2x0bWRrYmJua3BhZnhycXBmZ2N0dmFzY3VqamN1Y2h1YXpjaXVtdHRkbmF3aWhtbW9qZmJoeHZvbXRmcGJmaHR2aXdsYXVlb2dwcG1qc3BjYWxmaGNhcmtsYmlzcGh0anBhbmhsaXNwbnRza2tjbGpnZ2tjenRmaG5lY25wdGlmZnRyZG10amZla2ZpdGthc2RnbmVscHVoYmZpbXB1Y2JrcGtjbXhsZmtwaWlqdmh0amtzeWx6cm9vZmFjeGNscGpuaGJpcmN5ZGp0Y2xqZG9ibHlyeW1hdGdoaWZvam1qanNla29vbW9mY2FjdGF2ZmN5Zm11Znhoc3Rqd3VwYmpreW9nbnlyeXBseXBxbGF5eW1veHRhbnFkcHVyYnd6cGxsb2traGhtYW5kam5hdGNibGtjb3Rna2x1dHR3YmRhdHFybWF6cHJ2YXd6anhlZmhqdGRraWt1cmxsY2xjam9naG1sd3RhbWRkY2NucXVyb3Jha2N5b2JsYXJ6YWNtbnFjbWV0dHVheWF1eWl2c21ma25uYW5sdGNtaWdmcmdhYmlwdG50aG1tdXRwaWJ5bHJhdGhqY2doY2ZtbG92cGNudHFwZW96bG90ZGtlaW9jZmtjaXZ1eWx6Ympvb3hjc2FjbmdkdXZ4dG50aGphZXBhdX1rbGFocGNtdnppY2twYWFwaG9jZ2lvZ2p0dnB0Z2poZG9udW5scGFvbG5kcWJxZmRtYnBqam94Ym9tbGlreXVpcG54cXh6Y2lmb3JhaGhldXl5dHpoanV0Z2Z3dHVscmpjZnhvaWFneWpmYnBqaWFrZ3l0eGJmbnBsZnBxd3RkaXFuaXR2dmF1amRqbGlmamlvcnltdmZ4bXhnb3JpY3ljZGZob2ZiYnlnZmxhdGlyamRpZGFkcXZpa2pvY2l5ZmR6aHJvZ255eWlia2dubnZobWpsb2xhdndmaWpjZ2dma3B0a3BnY3FmYWZheXNpdHltYWN2a3FweWxoaGJ1Ymh4c2x1emN5dmxvcmlwdGxwZmxjdWljcG5mc2hpeXh2a2tiY2p5dWtvdGFsZmNpcGhjZGd4aWZ0a2xkZ29wanNtdXJ0eWp5cGhia2JmbmJ3YnNvZmlheHRsdWhwbXJmZGFrdWx1cGVhcHZyeXhtYWVwaGF5bmV4emZsbmV2am1pYndvcml0aGh4YmJ5cG1tYWJvYmZuZmNvanR0Y3Jram1naXJ2bWlzdW5mbHVodGVudHJodGVvamtjaGtwZnBhZXNnd2dscWRrdnZudWx1bnF7bG1sdGFscGhvdWZqcGlhbGNmbGZ5ZHZmd3lkb2ZraGFpeWF3bGx3Y2pvYXJxdnpqbGZmZ2xjdGNsYmxwa2JzZmxocnRqZGFvd3ByZGJjdWJmbHlveWJodmh3ZndvZWl0Z254YnpuaWZwbGx4bXN0a251aWhvYmZlZWZra2FreW5uYWNra2NkdWFtZ3N2bnBoY3RmZ3NybnJvZWh2ZW5kYmZpb21xZm14Ym1paWl1bGF2b2dma2dhY2lrYWFtcHBybGpmbXBqY3VhYXNja2l1cWlmY2liamx1dGNtcGF0b2pyanZmeGdsenBvcGpkZ2NoanVqbGtuZnd0cG5qZnBhY3JrcHRmaGNzamdyaXBjcmZjZGFsem5ob25mZGNvaG9zZmhvaGVha250aXRtamZsbmJvcGNsY3hjdWlnb3hja3JiYWxyYWVidGFhcml
在备注中又发现了一段Base64字符
0ZWZtemNxaWRvZmd0ZnFnYmFkaWNubWhvdGlvbm9iZnlubGdvenRkYXZ2aW14b2JvdGlra2Z4d2lyb3JwZmNjdXpob3BoZmRjaWVrY2p5b21lamtjZ2Zmam51bmhvcGFkdGZndG1sdA==
再结合文档内容,合并在一起去解码(如果直接统计字频没有什么思路,刚刚试过了)
a2draGxmY290bnRpdWZwZ2hodGN3dWprY2ttb3ducGNrbXdseWd0bHBtZmtneWFhaWh1Y2RsYXRveXVjb2lnZ3JwbGt2a2Ftcmt0cXp4ZW1taXdrbGh1YWVrY2VvbHBvY2ZtdGFobWdmbWF2YWpuYmNwbWx0anRwdWZqY2FwY3RvanBqYmZmYmpid2h1YWxnZ3lqbmFtY2JmeWFjamJheGtpeGxtbXFpa3NtcHRxeW9qZXJ0ZmVrdGR4ZHh4YnRyeGNhbmd5bXNpbWh2dXdrdGV4c2dscnRwZ2FrdGJtZnVjZ3ZubXRqdWZvZWt5bXRsaW14ZGlqanB4eWl0YWJwbWt1Y2NubGtwb2V0Z2NkY3Bvc2tpenZ5eHJ0enhyYXh0bm9paHFjeGZvYWFhbHBhanlja2VrYnljZnZqb21sbGthamd5bWdmZGNycGVxa2xmc2NtZWppY3BqaWtjcHBhY3h5ZXZma3ljcHBia2R6Y2ZsbGlrcW5pdGNrYmhqb3JuZGhzb21mdHlwYWhwcW94cnlpbWhmbGNoY21rb3JldG1yb3RrYXJjanRobWZ0aWxpam55a3V0aWhienR0dW1zbmdmdGxtcmJmZmx0ZndjbmptZmF0bGZiemxva3RscHBsbWZpY29rcHBucGFjbWZ1Z21wdW5kdnRvbXdldmNqc2dhamdmZXF1dXBhaWV0eW5mamJicGpzbHZ5bmFmdG1scHBka3R0b2Z1emppanhpdGJmaXJtb3ZwemVraXJic2Zqc2d6bHVrb2x5dm9obXZnY3BrdGhzeGZ6bW1ibm1sZHp5dWljZHZrbXpiYXlidG9yY2ZvdHRkYW1jY25iYXBucmd4bGN5cGh5Zm5jZXhidmRubG9rZ295aWxwcmxvbnNodGNranR4bmFiamhsbWJwZGNtaGtqbmxnbXRnam5qYWtyaXpsbHBtbWFscHhhbXVuaW51cGtwZGlhcHNzbXZrZGp2Z2l5b2R1bXBuYXBsamtqYmNmaHRoc2tpb2twZ3R0eWhubmRzeGtxanp2dmRvc2VwcG9pZ3l0bW5uYXZjdG9wZHlpeHZiZG9zb2JtY3ViaXVhanhoeWZrdnJremdjdXlpbHB2YXdheW5xYWFwbGJrd2lpeHJjdGN0bGt4ZmpscGVhbW1qbmF1amNvdWlmbXZpa2ZpbXJvYXF0Y3RjZm1hdWJnYWdva2FyZnFmaGVtb3NydHlmb3B1a3VkY2FhaW1oZGZvZ25oa3JjZWxwY2F0Y3RweWpsYXZva2xnY2xhdGx0bXR6eWdwZWhma3poY3R6bmdtb2ZjaXpsdm54dG5sdWFqbHRvdmNqYWp1YnphdHBlaGhma25uZ2dwbHlsaXZmZWFpZHJteWp0YWNhbXhjbmtmeXN0d2ZuZmx5bmJta2NrYXJ4YWlzcGpsa3ZjdHZrbHh1bmNmcGJ4dmlyaXFleXBtdXZ1bHZsamNrY3lwcHRwdmV0b3hobWlwYmlsbmplb3drd3VjdG9rbmFmcHdvYXBmdGNsemhwaHhjY2F0dGh1bXZ3aHpvbWFmd3Fxbmxzb3lhYnV0bHpwaWF0Zm1tYWprcmR2bGN6d2pwc3Nwb2FiaWZpcGhrb2NocHRrYXRrYWZlb255YmZpdmVjbGR6b2ZhdGV0Z2FsaGFmYW1vYXlvc291bm5hZmlhdGNqdGl3b29sYWNya2N1YWRwdXRreWxweXBiZ2ZlcHdwc25jd2tjd2xsYXJ5anNjYW5id3BkcHpicHR1dG5sbm9wd3BpdGJsb3RsbHppZmtsYWF1cmpwaWFqZnB0a2ZteHBic3VjdmpzZ21jYWxhbnRyc2NrYmt1eWZnYWFrZmFjbmxkdXZxZXR5amdqbW5hZWFjbmdheGNuYW1qbWlna2tpdW1sbmR3Y2ttdWFuYW52cnJiZnp4enl1dWVob25lbWxjanp1dm9hanVmZGdqampjZ21ucHRmdXVjdWJjdGpoYW1sb2xmaG9pZnZia2themNwb3pjeXVjYnJnb2picG5haGNneXV0dGR2bXR0dndqbWhic2ptYmJhdmNkbHlob3Fqb21wY3B2aHRrb2FpcnZ0bWtmZnlhdGttcHR1dW9vb2xncG5udWVsaGZodnZpc3Vrd3lubWlhY25sbHVtaHRqZWt1YXV1cGxyeGtpZXB1anhsaWNma2NiY2htbmdsZ3BsaWhteWNybnNvbWF3dWZ1b29tdXVuaGRvb2FydWRhbW9hbW9ocW9vY2Z1cGp1aWFieHh1dnl2bm9zb3Vvb3Zha2xjZmt0eXJmYWdmYXl2cHVmdnBiZ3RhZmVraXBpY292dGZ0bnV4c2phdmpkcWt2ZnVpa2x0bWRrYmJua3BhZnhycXBmZ2N0dmFzY3VqamN1Y2h1YXpjaXVtdHRkbmF3aWhtbW9qZmJoeHZvbXRmcGJmaHR2aXdsYXVlb2dwcG1qc3BjYWxmaGNhcmtsYmlzcGh0anBhbmhsaXNwbnRza2tjbGpnZ2tjenRmaG5lY25wdGlmZnRyZG10amZla2ZpdGthc2RnbmVscHVoYmZpbXB1Y2JrcGtjbXhsZmtwaWlqdmh0amtzeWx6cm9vZmFjeGNscGpuaGJpcmN5ZGp0Y2xqZG9ibHlyeW1hdGdoaWZvam1qanNla29vbW9mY2FjdGF2ZmN5Zm11Znhoc3Rqd3VwYmpreW9nbnlyeXBseXBxbGF5eW1veHRhbnFkcHVyYnd6cGxsb2traGhtYW5kam5hdGNibGtjb3Rna2x1dHR3YmRhdHFybWF6cHJ2YXd6anhlZmhqdGRraWt1cmxsY2xjam9naG1sd3RhbWRkY2NucXVyb3Jha2N5b2JsYXJ6YWNtbnFjbWV0dHVheWF1eWl2c21ma25uYW5sdGNtaWdmcmdhYmlwdG50aG1tdXRwaWJ5bHJhdGhqY2doY2ZtbG92cGNudHFwZW96bG90ZGtlaW9jZmtjaXZ1eWx6Ympvb3hjc2FjbmdkdXZ4dG50aGphZXBhdX1rbGFocGNtdnppY2twYWFwaG9jZ2lvZ2p0dnB0Z2poZG9udW5scGFvbG5kcWJxZmRtYnBqam94Ym9tbGlreXVpcG54cXh6Y2lmb3JhaGhldXl5dHpoanV0Z2Z3dHVscmpjZnhvaWFneWpmYnBqaWFrZ3l0eGJmbnBsZnBxd3RkaXFuaXR2dmF1amRqbGlmamlvcnltdmZ4bXhnb3JpY3ljZGZob2ZiYnlnZmxhdGlyamRpZGFkcXZpa2pvY2l5ZmR6aHJvZ255eWlia2dubnZobWpsb2xhdndmaWpjZ2dma3B0a3BnY3FmYWZheXNpdHltYWN2a3FweWxoaGJ1Ymh4c2x1emN5dmxvcmlwdGxwZmxjdWljcG5mc2hpeXh2a2tiY2p5dWtvdGFsZmNpcGhjZGd4aWZ0a2xkZ29wanNtdXJ0eWp5cGhia2JmbmJ3YnNvZmlheHRsdWhwbXJmZGFrdWx1cGVhcHZyeXhtYWVwaGF5bmV4emZsbmV2am1pYndvcml0aGh4YmJ5cG1tYWJvYmZuZmNvanR0Y3Jram1naXJ2bWlzdW5mbHVodGVudHJodGVvamtjaGtwZnBhZXNnd2dscWRrdnZudWx1bnF7bG1sdGFscGhvdWZqcGlhbGNmbGZ5ZHZmd3lkb2ZraGFpeWF3bGx3Y2pvYXJxdnpqbGZmZ2xjdGNsYmxwa2JzZmxocnRqZGFvd3ByZGJjdWJmbHlveWJodmh3ZndvZWl0Z254YnpuaWZwbGx4bXN0a251aWhvYmZlZWZra2FreW5uYWNra2NkdWFtZ3N2bnBoY3RmZ3NybnJvZWh2ZW5kYmZpb21xZm14Ym1paWl1bGF2b2dma2dhY2lrYWFtcHBybGpmbXBqY3VhYXNja2l1cWlmY2liamx1dGNtcGF0b2pyanZmeGdsenBvcGpkZ2NoanVqbGtuZnd0cG5qZnBhY3JrcHRmaGNzamdyaXBjcmZjZGFsem5ob25mZGNvaG9zZmhvaGVha250aXRtamZsbmJvcGNsY3hjdWlnb3hja3JiYWxyYWVidGFhcml0ZWZtemNxaWRvZmd0ZnFnYmFkaWNubWhvdGlvbm9iZnlubGdvenRkYXZ2aW14b2JvdGlra2Z4d2lyb3JwZmNjdXpob3BoZmRjaWVrY2p5b21lamtjZ2Zmam51bmhvcGFkdGZndG1sdA==
Base64编码转换工具,Base64加密解密 (qqxiuzi.cn)
复制下来
kgkhlfcotntiufpghhtcwujkckmownpckmwlygtlpmfkgyaaihucdlatoyucoiggrplkvkamrktqzxemmiwklhuaekceolpocfmtahmgfmavajnbcpmltjtpufjcapctojpjbffbjbwhualggyjnamcbfyacjbaxkixlmmqiksmptqyojertfektdxdxxbtrxcangymsimhvuwktexsglrtpgaktbmfucgvnmtjufoekymtlimxdijjpxyitabpmkuccnlkpoetgcdcposkizvyxrtzxraxtnoihqcxfoaaalpajyckekbycfvjomllkajgymgfdcrpeqklfscmejicpjikcppacxyevfkycppbkdzcfllikqnitckbhjorndhsomftypahpqoxryimhflchcmkoretmrotkarcjthmftilijnykutihbzttumsngftlmrbffltfwcnjmfatlfbzloktlpplmficokppnpacmfugmpundvtomwevcjsgajgfequupaietynfjbbpjslvynaftmlppdkttofuzjijxitbfirmovpzekirbsfjsgzlukolyvohmvgcpkthsxfzmmbnmldzyuicdvkmzbaybtorcfottdamccnbapnrgxlcyphyfncexbvdnlokgoyilprlonshtckjtxnabjhlmbpdcmhkjnlgmtgjnjakrizllpmmalpxamuninupkpdiapssmvkdjvgiyodumpnapljkjbcfhthskiokpgttyhnndsxkqjzvvdoseppoigytmnnavctopdyixvbdosobmcubiuajxhyfkvrkzgcuyilpvawaynqaaplbkwiixrctctlkxfjlpeammjnaujcouifmvikfimroaqtctcfmaubgagokarfqfhemosrtyfopukudcaaimhdfognhkrcelpcatctpyjlavoklgclatltmtzygpehfkzhctzngmofcizlvnxtnluajltovcjajubzatpehhfknnggplylivfeaidrmyjtacamxcnkfystwfnflynbmkckarxaispjlkvctvklxuncfpbxviriqeypmuvulvljckcypptpvetoxhmipbilnjeowkwuctoknafpwoapftclzhphxccatthumvwhzomafwqqnlsoyabutlzpiatfmmajkrdvlczwjpsspoabifiphkochptkatkafeonybfivecldzofatetgalhafamoayosounnafiatcjtiwoolacrkcuadputkylpypbgfepwpsncwkcwllaryjscanbwpdpzbptutnlnopwpitblotllzifklaaurjpiajfptkfmxpbsucvjsgmcalantrsckbkuyfgaakfacnlduvqetyjgjmnaeacngaxcnamjmigkkiumlndwckmuananvrrbfzxzyuuehonemlcjzuvoajufdgjjjcgmnptfuucubctjhamlolfhoifvbkkazcpozcyucbrgojbpnahcgyuttdvmttvwjmhbsjmbbavcdlyhoqjompcpvhtkoairvtmkffyatkmptuuooolgpnnuelhfhvvisukwynmiacnllumhtjekuauuplrxkiepujxlicfkcbchmnglgplihmycrnsomawufuoomuunhdooarudamoamohqoocfupjuiabxxuvyvnosouoovaklcfktyrfagfayvpufvpbgtafekipicovtftnuxsjavjdqkvfuikltmdkbbnkpafxrqpfgctvascujjcuchuazciumttdnawihmmojfbhxvomtfpbfhtviwlaueogppmjspcalfhcarklbisphtjpanhlispntskkcljggkcztfhnecnptifftrdmtjfekfitkasdgnelpuhbfimpucbkpkcmxlfkpiijvhtjksylzroofacxclpjnhbircydjtcljdoblyrymatghifojmjjsekoomofcactavfcyfmufxhstjwupbjkyognyryplypqlayymoxtanqdpurbwzpllokkhhmandjnatcblkcotgkluttwbdatqrmazprvawzjxefhjtdkikurllclcjoghmlwtamddccnqurorakcyoblarzacmnqcmettuayauyivsmfknnanltcmigfrgabiptnthmmutpibylrathjcghcfmlovpcntqpeozlotdkeiocfkcivuylzbjooxcsacngduvxtnthjaepau}klahpcmvzickpaaphocgiogjtvptgjhdonunlpaolndqbqfdmbpjjoxbomlikyuipnxqxzciforahheuyytzhjutgfwtulrjcfxoiagyjfbpjiakgytxbfnplfpqwtdiqnitvvaujdjlifjiorymvfxmxgoricycdfhofbbygflatirjdidadqvikjociyfdzhrognyyibkgnnvhmjlolavwfijcggfkptkpgcqfafaysitymacvkqpylhhbubhxsluzcyvloriptlpflcuicpnfshiyxvkkbcjyukotalfciphcdgxiftkldgopjsmurtyjyphbkbfnbwbsofiaxtluhpmrfdakulupeapvryxmaephaynexzflnevjmibworithhxbbypmmabobfnfcojttcrkjmgirvmisunfluhtentrhteojkchkpfpaesgwglqdkvvnulunq{lmltalphoufjpialcflfydvfwydofkhaiyawllwcjoarqvzjlffglctclblpkbsflhrtjdaowprdbcubflyoybhvhwfwoeitgnxbznifpllxmstknuihobfeefkkakynnackkcduamgsvnphctfgsrnroehvendbfiomqfmxbmiiiulavogfkgacikaampprljfmpjcuaasckiuqifcibjlutcmpatojrjvfxglzpopjdgchjujlknfwtpnjfpacrkptfhcsjgripcrfcdalznhonfdcohosfhoheakntitmjflnbopclcxcuigoxckrbalraebtaaritefmzcqidofgtfqgbadicnmhotionobfynlgoztdavvimxobotikkfxwirorpfccuzhophfdciekcjyomejkcgffjnunhopadtfgtmlt
可以用网站,也可以用脚本
语料库在线–字词频统计 (zhonghuayuwen.org)
序号 字词 出现次数 出现频率
1 a 198 6.2658
2 c 194 6.1392
3 t 188 5.9494
4 f 180 5.6962
5 p 174 5.5063
6 l 170 5.3797
7 o 164 5.1899
8 k 159 5.0316
9 m 152 4.8101
10 i 145 4.5886
11 j 139 4.3987
12 n 133 4.2089
13 u 128 4.0506
14 h 116 3.6709
15 b 109 3.4494
16 y 106 3.3544
17 g 100 3.1646
18 v 92 2.9114
19 r 87 2.7532
20 d 79 2.5
21 x 73 2.3101
22 e 68 2.1519
23 s 61 1.9304
24 z 54 1.7089
25 w 48 1.519
26 q 41 1.2975
27 { 1 0.0316
28 } 1 0.0316
显然,flag是按照字频从大到小排列的({和}除外)
flag{plokmijnuhbygvrdxeszwq}
import re
file = open('18.txt') #根据路径自行调整
line = file.readlines()
file.seek(0,0)
file.close()
result = {}
for i in range(97,123):
count = 0
for j in line:
find_line = re.findall(chr(i),j)
count += len(find_line)
result[chr(i)] = count
res = sorted(result.items(),key=lambda item:item[1],reverse=True)
num = 1
for x in res:
print('频数第{0}: '.format(num),x)
num += 1
不过使用脚本会有一点点小问题,那就是{和}没有给统计上(不知是因为频率太低还是特殊字符的愿因,这时就需要我们给它加上了
频数第1: (‘a’, 198)
频数第2: (‘c’, 194)
频数第3: (‘t’, 188)
频数第4: (‘f’, 180)
频数第5: (‘p’, 174)
频数第6: (‘l’, 170)
频数第7: (‘o’, 164)
频数第8: (‘k’, 159)
频数第9: (‘m’, 152)
频数第10: (‘i’, 145)
频数第11: (‘j’, 139)
频数第12: (‘n’, 133)
频数第13: (‘u’, 128)
频数第14: (‘h’, 116)
频数第15: (‘b’, 109)
频数第16: (‘y’, 106)
频数第17: (‘g’, 100)
频数第18: (‘v’, 92)
频数第19: (‘r’, 87)
频数第20: (‘d’, 79)
频数第21: (‘x’, 73)
频数第22: (‘e’, 68)
频数第23: (‘s’, 61)
频数第24: (‘z’, 54)
频数第25: (‘w’, 48)
频数第26: (‘q’, 41)
flag{plokmijnuhbygvrdxeszwq}
flag{plokmijnuhbygvrdxeszwq}
实物与描述严重不符(狗头)
PS打开,具体操作步骤如下:
1
8b8b61
2
8b8b61
3
8b8b70
4
8b8b6a
5
8b8b65
6
8b8b73
8b8b618b8b618b8b708b8b6a8b8b658b8b73
16进制,直接放到010里
aapjes
包上flag衣服·就好了
flag{aapjes}
flag{aapjes}
打开description.md
这段话的翻译是:
https://static.ctf.insecurity-insa.fr/a7572eb34ba9700b39f1ba7f5869bf301b67d406.tar.gz
网址打不开,再看看gflag
根据翻译的提示,这应该和编程有关,这个文件就很可疑,有大量重复性的语句
在维基百科上找到了一种很相似的
看了看代码示例,应该就是G代码
找个网站运行
NC Viewer // GCode Viewer and Machine Simulator
flag{3d_pr1nt3d_fl49}
flag{3d_pr1nt3d_fl49}
图片名称有点可疑。是base16,但是没解出来什么
b0d3e5f34e36b189b47a1a57a0a43ba4
010打开图片
文件头似乎有点问题,尝试着修复了一下,把png文件头给删掉
重新打开
很明显文件尾后面有一些东西
存下来(直接复制出了点问题),存为txt文件
打开
虽然是乱码,但是我们可以把它转化一下,这是序列化文件
python脚本
import pickle #pickle库
fp = open("211.txt","rb+") #打开序列化文件
fw = open("pickle.txt", "w") #开保存文件
a=pickle.load(fp) #反序列化文件编译
pickle=str(a) #转换成字符串要不然不能保存
fw.write( pickle ) #写入文件
fw.close() #关闭文件
fp.close()
打开pickle
是一些类似于坐标的东西,用脚本搞一下
fw = open("pickle.txt","r")
text=fw.read( )
i=0
a=0
while i<len(text)+1:
if(text[i]==']'):
print('\n')
a=0
elif(text[i]=='('):
if(text[i+2]==','):
b=text[i+1]
d=text[i+1]
b=int(b)-int(a)
c=1
while c<b:
print(" ", end="")
c += 1
print(text[i+5], end="")
a=int(d)
else:
b=text[i+1]+text[i+2]
d=text[i+1]+text[i+2]
b=int(b)-int(a)
c=1
while c<b:
print(" ", end="")
c += 1
print(text[i+6], end="")
a=int(d)
i +=1
打开图形
不得不说,这也太考验想象力了,需要多试几次才能得到,尤其是9和该选哪个,还有6和b
flag{a273fdedf3d746e97db9086ebbb195d6}
再搜一下sl命令
感觉好有意思,试试看
打开kali,以root身份打开终端,输入
apt install sl
然后输入sl,如果出现了一辆会跑的小火车,表明安装成功,如下:
哇,忽然发现typora也可以放视频,真不错
flag{a273fdedf3d746e97db9086ebbb195d6}
随便打开一个看看,题目要求我们获得黑客的IP地址,黑客攻击时会产生大量的数据包。利用wireshark统计工具分析一下
然后统计-端点,同样发现183.129.152.140的包数最多
最后统计-IPv4 Statistics-ALL Address。统计下IP,183.129.152.140的数量最多。
所以,183.129.152.140应该就是黑客的IP。分析其它数据包也印证了这个结果
flag{183.129.152.140}
打开即可看到flag
flag{let_the_game_begin!}
txt
90c490781f9c320cd1ba671fcb112d1c
和前面的一道题很像
在IMF里发现:
存下来,
打开(10).eml,在这个邮件里发现一张有base64的图片,这里面的内容应该就是密钥了
使用在线把它提取出来,可以大致看一下是否有错误
Free Online OCR - convert PDF to Word, Images to text, JPEG to Word
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDCm6vZmclJrVH1AAyGuCuSSZ8O+mIQiOUQCvN0HYbj8153JfSQ
LsJIhbRYS7+zZ1oXvPemWQDv/u/tzegt58q4ciNmcVnq1uKiygc6QOtvT7oiSTyO
vMX/q5iE2iClYUIHZEKX3BjjNDxrYvLQzPyGD1EY2DZIO6T45FNKYC2VDwIDAQAB
AoGAbtWUKUkx37lLfRq7B5sqjZVKdpBZe4tL0jg6cX5Djd3Uhk1inR9UXVNw4/y4
QGfzYqOn8+Cq7QSoBysHOeXSiPztW2cL09ktPgSlfTQyN6ELNGuiUOYnaTWYZpp/
QbRcZ/eHBulVQLlk5M6RVs9BLI9X08RAl7EcwumiRfWas6kCQQDvqC0dxl2wIjwN
czILcoWLig2c2u71Nev9DrWjWHU8eHDuzCJWvOUAHIrkexddWEK2VHd+F13GBCOQ
ZCM4prBjAkEAz+ENahsEjBE4+7H1HdIaw0+goe/45d6A2ewO/lYH6dDZTAzTW9z9
kzV8uz+Mmo5163/JtvwYQcKF39DJGGtqZQJBAKa18XR16fQ9TFL64EQwTQ+tYBzN
+04eTWQCmH3haeQ/0Cd9XyHBUveJ42Be8/jeDcIx7dGLxZKajHbEAfBFnAsCQGq1
AnbJ4Z6opJCGu+UP2c8SC8m0bhZJDelPRC8IKE28eB6SotgP61ZqaVmQ+HLJ1/wH
/5pfc3AmEyRdfyx6zwUCQCAH4SLJv/kprRz1a1gx8FR5tj4NeHEFFNEgq1gmiwmH
2STT5qZWzQFz8NRe+/otNOHBR2Xk4e8IS+ehIJ3TvyE=
-----END RSA PRIVATE KEY-----
手动检查一下是否有错误,按照正确格式保存一下,存为key.txt,一定要确保密钥是对的,否则后面做不出来
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDCm6vZmclJrVH1AAyGuCuSSZ8O+mIQiOUQCvN0HYbj8153JfSQ
LsJIhbRYS7+zZ1oXvPemWQDv/u/tzegt58q4ciNmcVnq1uKiygc6QOtvT7oiSTyO
vMX/q5iE2iClYUIHZEKX3BjjNDxrYvLQzPyGD1EY2DZIO6T45FNKYC2VDwIDAQAB
AoGAbtWUKUkx37lLfRq7B5sqjZVKdpBZe4tL0jg6cX5Djd3Uhk1inR9UXVNw4/y4
QGfzYqOn8+Cq7QSoBysHOeXSiPztW2cL09ktPgSlfTQyN6ELNGuiUOYnaTWYZpp/
QbRcZ/eHBulVQLlk5M6RVs9BLI9X08RAl7EcwumiRfWas6kCQQDvqC0dxl2wIjwN
czILcoWLig2c2u71Nev9DrWjWHU8eHDuzCJWvOUAHIrkexddWEK2VHd+F13GBCOQ
ZCM4prBjAkEAz+ENahsEjBE4+7H1HdIaw0+goe/45d6A2ewO/lYH6dDZTAzTW9z9
kzV8uz+Mmo5163/JtvwYQcKF39DJGGtqZQJBAKa18XR16fQ9TFL64EQwTQ+tYBzN
+04eTWQCmH3haeQ/0Cd9XyHBUveJ42Be8/jeDcIx7dGLxZKajHbEAfBFnAsCQGq1
AnbJ4Z6opJCGu+UP2c8SC8m0bhZJDelPRC8IKE28eB6SotgP61ZqaVmQ+HLJ1/wH
/5pfc3AmEyRdfyx6zwUCQCAH4SLJv/kprRz1a1gx8FR5tj4NeHEFFNEgq1gmiwmH
2STT5qZWzQFz8NRe+/otNOHBR2Xk4e8IS+ehIJ3TvyE=
-----END RSA PRIVATE KEY-----
然后按照以前那个greatspace那道题类似的步骤添加密钥
发现flag
flag{0ca2d8642f90e10efd9092cd6a2831c0}
flag{0ca2d8642f90e10efd9092cd6a2831c0}
听了一下,真难听,
audacity打开,波形是平的
和前面那道题有点像
kali的qsstv工具
安装qsstv
apt install qsstv
安装成功后,在终端下输入qsstv,自动打开
下载好后,在终端输入qsstv,系统自动打开qsstv,然后点击Options->configuration->sound->sound input->from file
点击OK,然后点击这个按钮,选择要解码的文件,然后就开始解码啦
flag{r3ce1ved_4n_img}
flag{r3ce1ved_4n_img}
看来又是一道内存取证题
查看基本信息
./volatility -f 26.img imageinfo
奇怪了,怎么没有结果
那就要使用另一个程序来处理了
trid下载与安装,参考
(11条消息) 文件类型识别工具:TrID(trid)下载安装及使用_Red snow的博客-CSDN博客
然后就可以进行分析了
./trid 26.img
可以看到可能的文件类型
没发现什么,再去虚拟机挂载看看
命令:
mount 26.img /mnt
进行挂载,不成功的话可以加个sudo或者多试几次,直至输入ls出现文件
输入cd /mnt,再输入ls出现文件表明挂载成功
然后再输入ls -lha查看具体信息
到文件系统中打开mnt文件夹,查看分离出的图片
并没有找到什么,但是前面ls查看时有lost+found字样,百度一下
ext指extundelete,可以恢复文件,具体可以参考这篇博客
(11条消息) 文件恢复原理&&Linux文件恢复工具-foremost&extundelete_Red snow的博客-CSDN博客_foremost 恢复
使用命令:
extundelete 26.img --restore-all
然后打开恢复的文件夹
使用cat命令打印或者010打开文件
cat file.17
或者先查看恢复的文件是什么,然后再打印出来
010
flag{fugly_cats_need_luv_2}
cat,ls,extundelete命令恢复文件,mount挂载文件
一上来有点懵,这是啥?
运行一下那个程序看看,是一个游戏,靠最右侧直接一路上去就发现flag了
flag{You_Are_The_Ready_Player_One!!!For_Sure!!!}
flag{You_Are_The_Ready_Player_One!!!For_Sure!!!}
玩游戏获得flag
这个题目名称好有意思
010打开,
photo.dat,那应该和图片有关系,分析开头和结尾
有点类似于jpg的FFD8FF文件头和FFD9文件尾诶,那要怎么样转换成jpg格式呢?想到了那几个常用的计算方法——二进制与,二进制或,二进制异或和二进制反转,优先考虑异或,这个比较常见,CC和FF的二进制分别是:
CC 11001100
FF 11111111
CC^x=11111111
异或运算符是这个意思,参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1
(1) 00=0,01=1 0异或任何数=任何数
(2) 10=1,11=0 1异或任何数-任何数取反
(3) 任何数异或自己=把自己置0
这样就可以一位位地推导出x是多少了,1-8位x与CC的bit位全是不同的,这就很简单,x应该是
00110011,转换成16进制就是33
在线进制转换器 | 菜鸟工具 (runoob.com)
与33异或
010
看起来很成功
保存,修改后缀为jpg,打开,
这张图片还从来没见过,百度一下
原来需要根据图片中的信息定位,查询网站
https://v.juhe.cn/cell/Triangulation/index.html?s=inner
这个flag很离谱,是中文
flag{桂林电子科技大学花江校区}
flag{桂林电子科技大学花江校区}
二进制异或,联通基站定位
看题目描述,应该和二维码有关
010打开
在文件尾后面发现了png数据,存下来
选中后复制为16进制文本
然后新建一个010文件,粘贴自16进制文本
存下来,打开
是一张残缺的二维码,试了试扫不出来
再回到刚刚图片,stegsolve打开也没发现啥,silent eye也没解出来东西,
百度一下能不能修复
试试看
借助网站
QRazyBox - QR Code Analysis and Recovery Toolkit (merricx.github.io)
新建一个project
然后新建空白的二维码(导入会出错)
调整大小为29x29,这是根据那个残缺的二维码确定的
尺寸说明如下,共29个间隔
然后就一点点的根据这一半二维码进行填充,记得,补全黑色部分后,也要把白色的部分填补上,因为灰色是算“空”的。借助这个分隔进行填充,不然容易搞错
然后点击Tools-Extract QR Infomation
就看到flag了
flag{OQWIC_4DS1A_S034S}
二维码修复工具
打开第一个看看
邮箱协议
POP3
POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。(与IMAP有什么区别?)
SMTP
SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。
增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。IMAP
IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。(与POP3有什么区别?)
参考:什么是POP3、SMTP和IMAP?-163邮箱常见问题
百度一下常用的SMTP协议
过滤smtp流量,可以很明显的看到几个邮箱地址
打开其中一条
可以知发送邮箱是 [email protected]
flag{ [email protected]}
SMTP邮箱协议
取证题目,名称是火狐,可以借助一个工具
firepwd ,github下载工具
https://github.com/lclevy/firepwd
打开解压后的文件夹,打开终端,输入
python firepwd.py logins.json
在最后面看到flag
如果出错自行百度
注意这个flag不用flag{}包起来
GKCTF{9cf21dda-34be-4f6c-a629-9c4647981ad7}
firepwd工具的使用
百度一下The fourth extended filesystem
这不是前面那个文件恢复程序嘛
没有img文件,先放着,
有备注,第一时间联想到压缩包密码
用Kali的foremost分离看看
jpg文件夹里还是刚刚那张图片,压缩包打开是加密的,正好用前面那个备注里的信息破解一下试试
Pactera
还真是解压密码,得到一个file.txt
这熟悉的感觉,
脚本
import re
file = open('file.txt') #根据路径自行调整
line = file.readlines()
file.seek(0,0)
file.close()
result = {}
for i in range(97,123):
count = 0
for j in line:
find_line = re.findall(chr(i),j)
count += len(find_line)
result[chr(i)] = count
res = sorted(result.items(),key=lambda item:item[1],reverse=True)
num = 1
for x in res:
print('频数第{0}: '.format(num),x)
num += 1
D:\Programes\py37_work\Scripts\python.exe D:/Programes/pythonProject/字频统计.py
频数第1: ('h', 1700)
频数第2: ('u', 1650)
频数第3: ('a', 1600)
频数第4: ('n', 1550)
频数第5: ('w', 1500)
频数第6: ('e', 1450)
频数第7: ('s', 1350)
频数第8: ('i', 1300)
频数第9: ('k', 1250)
频数第10: ('o', 1150)
频数第11: ('b', 0)
频数第12: ('c', 0)
频数第13: ('d', 0)
频数第14: ('f', 0)
频数第15: ('g', 0)
频数第16: ('j', 0)
频数第17: ('l', 0)
频数第18: ('m', 0)
频数第19: ('p', 0)
频数第20: ('q', 0)
频数第21: ('r', 0)
频数第22: ('t', 0)
频数第23: ('v', 0)
频数第24: ('x', 0)
频数第25: ('y', 0)
频数第26: ('z', 0)
进程已结束,退出代码0
结果似乎有点问题,还是用网站吧
网站
语料库在线–字词频统计 (zhonghuayuwen.org)
flag{huanwe1sik4o!}
图片属性,foremost分离,字频统计
随便打开一个tar文件
继续打开也是这样,好家伙,这么多文件地嘛,
有点类似于套娃
import tarfile
import os
current_path = r"\D:/Programes/pythonProject/new/tar"
if __name__ == "__main__":
i = 0
target = "42.tar.xz"
tarname = current_path + target
while True:
i += 1
print("当前层数:{0}".format(i))
tar = tarfile.open(tarname)
filenames = tar.getnames()
if target not in filenames: break
tar.extract(target,current_path)
tar.close()
print("最后一层:{}".format(filenames),"\n正在解压……")
tar.extractall(current_path)
tar.close()
不过速度太慢了,借用一下一个bash,
while [ "`find . -type f -name '*.tar.xz' | wc -l`" -gt 0 ]; do find -type f -name "*.tar.xz" -exec tar xf '{}' \; -exec rm -- '{}' \;; done;
好家伙,一运行直接磁盘爆满,一共就4GB内存,运行到一半我及时地暂停了
直接cat查找flag
flag{04ebb0d6a87f9771f2eea4dce5b91a85e7623c13301a8007914085a91b3ca6d9}
破解套娃,bash语句,cat命令
有点像USB数据包,和以前做过的一道题很像
使用同样的tshark命令获取数据
tshark -r 2.pcapng -T fields -e usb.capdata > usbdata.txt
打开usbdata文件,和USB那道题很类似
WangYihang/UsbKeyboardDataHacker: USB键盘流量包取证工具 , 用于恢复用户的击键信息 (github.com)
下载地址
WangYihang/UsbKeyboardDataHacker: USB键盘流量包取证工具 , 用于恢复用户的击键信息 (github.com)
python UsbKeyboardDataHacker.py 2.pcapng
【+] Found : autokey(‘****’).decipheer(‘mplrvffczeyoujfjkybxgzvdgqaurkxzolkolvtufblrnjesqitwahxnsijxpnmplshcjbtyhzealogviaaissplfhlfswfehjncrwhtinsmambvexopzeiz’)
处理一下密文,把
前面的一个字母给删去(del代表delete删除键,看看键盘就知道了)
mplrvffczeyoujfjkybxgzvdgqaurkxzolkolvtufblrnjesqitwahxnsijxpnmplshcjbtyhzealogviaaissplfhlfswfehjncrwhtinsmambvexpziz
https://github.com/WangYihang/UsbKeyboardDataHacker)
下载地址
hotzzzzy/breakautokey: breakautokey (github.com)
脚本
实用密码学 (practicalcryptography.com)
配置文件
Practical Cryptography
解压后,把文件名里的"english_"删去,放在Python2文件夹中。最后一个py文件放在lib文件夹里。
把框出来的这部分换成我们要破解的数据,然后就可以跑脚本啦
python2 break_autokey.py
png图片有密码,联想到了lsb
Stegsolve打开,在red0通道发现了一点东西,blue0和green0里面也有,尝试着合并也没出来什么东西
那就利用一个lsb工具试试看
livz/cloacked-pixel: LSB steganography and detection (github.com)
用法
python2 lsb.py extract 3.png out lovekfc
提示把keyword放到前面,根据提示,
flag{cCgeLdnrIBCX9G1g13KFfeLNsnMRdOwf}
题目名称叫disk image,就是磁盘照片,和磁盘有关系
照片上部分有点问题,010打开
第一眼没有什么问题,stegsolve打开看看
好像也没啥,换个工具看看,
zsteg -e 'b8,rgb,lsb,xy' 4.png > disk.dat
导出文件的格式选择dat,txt文档无法正常查看
打开dat文件看看
没有什么东西
使用kali自带的testdisk工具,命令
testdisk 4disk.dat
打开之后
回车
默认none,再次回车
方向键右键选择undelete
然后向下查看所有文件,找到一个不正常的
根据提示,按c,回车,拷贝,
打开
flag{FAT12_FTW}
zsteg查看png隐藏信息;testdisk工具处理磁盘
打开description
翻译一下
漏洞题目
010打开图片,发现jpg文件头
打开jpg文件,发现flag
flag{I337_h4xx0r5_c0mmun1c473_w17h_PNGs}
binwalk分离
提示:
听了听没有东西,audacity打开
熟悉的套路,频谱是重复的,选取其中一段,宽的代表1,窄的代表0,提取出来
0101010101010101000000110
再按照提示,转化成:
FFFFFFFF0001,
最后一个0就不算了
flag{FFFFFFFF0001}
flag{FFFFFFFF0001}
频谱长短转化;根据提示解题;
听了听是电话按键音,dtmf2num工具识别一下
下载地址,实在是太不好找了
https://www.softpedia.com/get/Multimedia/Audio/Other-AUDIO-Tools/DTMF2NUM.shtml#download
打开终端,输入
.\ dtmf2num.exe 密码.wav
DTMF numbers: 18688422216D09
电话号码是纯数字,删掉D,1868842221609
也可以利用网站,解出来没有字母;
Detect DTMF Tones (dialabc.com)
然后发送电话号码到公众号,没找到,这里直接得出flag了
flag{Oh!!!_Y0u_f1nd_my_secret}
DTMF电话音识别;
题目描述:
翻译一下
发现flag.txt字样,并且还跟着一串base64编码
Vmxkd1NrNVhVbk5qUlZKU1ltdGFjRlJYZEhOaWJFNVhWR3RPV0dKVmJEWldiR1JyV1ZkS1ZXRXphRnBpVkVaVFYycEtVMU5IUmtobFJYQlRUVmhDTmxZeFdtdGhhelZ5WWtWYWFWSlViRmRVVlZaYVRURmFjbFpyT1ZaV2JXUTJWa1pvYTFkck1YVlVhbHBoVWxack1GUlZaRXRqVmxaMVZHMTRXRkpVUlRCWFdIQkdUbGRHY2s1VmFFOVdNWEJoV1Zkek1XSldaSFJPVm1SclZsZDRXbFJWVm5wUVVUMDk=
找网站解了一下没解出来,多试几次就出来了,
VldwSk5XUnNjRVJSYmtacFRXdHNibE5XVGtOWGJVbDZWbGRrWVdKVWEzaFpiVEZTV2pKU1NHRkhlRXBTTVhCNlYxWmthazVyYkVaaVJUbFdUVVZaTTFaclZrOVZWbWQ2VkZoa1drMXVUalphUlZrMFRVZEtjVlZ1VG14WFJURTBXWHBGTldGck5VaE9WMXBhWVdzMWJWZHROVmRrVld4WlRVVnpQUT09
VWpJNWRscERRbkZpTWtsblNWTkNXbUl6VldkYWJUa3hZbTFSWjJSSGFHeEpSMXB6V1Zkak5rbEZiRTlWTUVZM1ZrVk9VVmd6VFhkWk1uTjZaRVk0TUdKcVVuTmxXRTE0WXpFNWFrNUhOV1paYWs1bVdtNVdkVWxZTUVzPQ==
R29vZCBqb2IgISBZb3UgZm91bmQgdGhlIGZsYWc6IElOU0F7VENQX3MwY2szdF80bjRseXMxc19jNG5fYjNfZnVuIX0K
也可以用python脚本,根据最终字符串中含有flag为线索
import base64
cipher_text = 'Vmxkd1NrNVhVbk5qUlZKU1ltdGFjRlJYZEhOaWJFNVhWR3RPV0dKVmJEWldi' \
'R1JyV1ZkS1ZXRXphRnBpVkVaVFYycEtVMU5IUmtobFJYQlRUVmhDTmxZeFdt' \
'dGhhelZ5WWtWYWFWSlViRmRVVlZaYVRURmFjbFpyT1ZaV2JXUTJWa1pvYTFk' \
'ck1YVlVhbHBoVWxack1GUlZaRXRqVmxaMVZHMTRXRkpVUlRCWFdIQkdUbGRH' \
'Y2s1VmFFOVdNWEJoV1Zkek1XSldaSFJPVm1SclZsZDRXbFJWVm5wUVVUMDk='
plain_text = ''
while 'flag' not in plain_text:
cipher_text, plain_text = plain_text, base64.b64decode(cipher_text).decode()
print(plain_text)
flag{TCP_s0ck3t_4n4lys1s_c4n_b3_fun!}
追踪流;base64多次编码;
好家伙,155534个txt文件,
打开start
找到这个文件
按照内容再打开下一个文件
继续
这就有点奇怪了,太像套娃了,这些txt文件内容前面都有数字,这代表什么呢?写出来
2055577251202304
转换一下进制
在线进制转换器 | 菜鸟工具 (runoob.com)
套路好深,那就用一个脚本提取这些数据吧
import re
current_path = "D:\\CTF\\P6-BUU\\9\\files\\" #最好使用绝对路径
start = open(current_path + "start.txt","r")
zipfile = open("data.zip","wb") #创建一个文件存储数据
content = start.read()
while True:
num = re.findall(r"^[0-9]+",content)[0]
zipfile.write((int(num)).to_bytes(2, byteorder = 'big'))
filename = re.findall(r" ([A-Za-z0-9.]+)$",content)
if filename:
nextfile = open(current_path + filename[0],"r")
content = nextfile.read()
nextfile.close()
else:
break
print(content)
start.close()
zipfile.close()
打开
有密码,那就爆破
爆破了十几分钟之后终于解出来了,范围是
tgb678
打开
010打开,原来是文件头被改了
修改为FF D8 FF ,还是不可以,看来修改的太少了
随便找一张jpg
修改为FF D8 FF E0,可以打开了
flag{0c6b489ca956e2fd94dce12be4bf0729}
10进制与16进制转换;python脚本获取文件信息;jpg文件头
不知道啥格式,binwalk也没分析出来,
仔细观察,有点像反编译
而且文件头加入了一些base64数据
如图中选中部分
再用stegosaurus脚本工具,和剑龙那道题一样
python stegosaurus.py -x 10.pyc
flag{Z3r0_fin411y_d34d}
反编译;stegosaurus脚本使用
description:
很明显有flag的痕迹,只是显示不全,
INSA{Aud1o_st3G4n
得到一半flag,继续寻找,联系题目名称和要求,这次要用到一个新工具
deep sound,在歌曲中隐藏文件的工具
链接:https://pan.baidu.com/s/14LOBPAzm4mWNMPJ3ccT4SQ?pwd=ujso
提取码:ujso
打开提示需要密码,使用脚本破解她的密码,脚本下载地址
john/deepsound2john.py at bleeding-jumbo · openwall/john · GitHub
打开终端
python deepsound2john.py final_flag.wav > password.txt
final_flag.wav:$dynamic_1529$b8f858d9deb0b805797cef03299e3bdd8990f48a
尝试对获取final_flag.wav 密码的hash值然后使用john进行爆破
John在Kali上有,可以直接用
password:azerty
按照提示找到导出文档
0_1s_4lwayS_Th3_S4me}
flag{Aud1o_st3G4n0_1s_4lwayS_Th3_S4me}
audacity查看并调整频谱;deep sound获取音频隐藏信息;john破解
翻译一下
是jpg文件,
在后面发现了png数据
仔细观察会发现
放大
短的是.,长的是-
… . .-… .–. – .
就是HELPME
再回到png的010,结尾后面还有数据
也复制下来,后缀改为ogg,
原来是个音频文件,audacity打开
… -. … .- -.–. – ----- .-.
… …-- …–.- .-- .---- .-…
.-… …–.- -. …-- …- …-- .-.
…–.- …- --. …-- -.-.-- -.–.-
合起来
… -. … .- -.–. – ----- .-. … …-- …–.- .-- .---- .-… .-… …–.- -. …-- …- …-- .-. …–.- …- --. …-- -.-.-- -.–.-
翻译一下
INSAM0R53W1LLN3V3R4G3
这个网站不对劲,换个网站试试
这个靠谱,(改成{
所以前面的helpme没用上
flag{M0R53_W1LL_N3V3R_4G3!}
010数据处理
摩斯密码
maybehint
根据以前的题目推测应该和NTFS数据流有关
导出后打开这个out.txt
==联想到base64,那就统计一下字频
ZW5jcnlwdG8=
和推测一致,解码
那应该和密码有关,先放着
再打开lookatme,发现底部有摩斯密码
.- …- - — -.- . -.–
是AUTOKEY
achnrvxzzuglarucalznwcygfggrufryvbzqjoxjymxvchhhdmliddcwmhghclpebtzwlojvew
那文本内容应该使用了autokey加密,使用脚本破解一下(pycharm坏了,重新安装,就没跑)
解出来的密码是:iamthepasswd
010打开secret
这一段文字需要删掉才可以继续解密
然后使用
搞出来一张图片
010打开图片发现zip数据
导出来打开
又是加密的zip,密码在哪呢?
很久很久以前也做过一道题
采用同样的办法提取颜色的十六进制
ffff70
ffff40
ffff73
ffff73 …
6条黄色带的16进制就是:
ffff70 ffff40 ffff73 ffff73 ffff57 ffff64
提取后2位
704073735764
转一下ascii
打开文档
显示隐藏内容
这是一种编程语言,ALPHUCK,借个网站
alphuck在线开发工具,在线编译IDE_w3cschool
eeeeeeeeeepaeaeeeaeAeeeeeeaeeeeeeeeeeccccisaaaaeejeeeeeejiiiiiiLiiiiijeeeeeejeeeeeeeeeeeeeeeeeeeejcceeeeeeeeeeePeeeeeeeejaaiiiiiiijcciiiiiiiiiijaaijiiiiiiiiiiiiiiiiiiiijeeeeeeHeeeeeeeeeeeeeeeeejcceeeeeeeeeeeejaaiiiijeeeeeeejceeeeeeeeeeeeeeeeeeeeeeeeejceeeeeeeeeeeeeeeeejaeeeeeejciiUiiiiiiiiiiiiiiiiijaeeeejceeeeeeeeeCeeeeeeeeejajciiiiiiiiiiiiiiiiiiijaaiiiijiijeeeeeeeeeeejKcciiiiiiiiiiiiiiijaaij
删掉大写APHKC几个字母
终于得到flag了!
flag{1t's_v3ry_De1iCi0us~!}
太多了!
打开hint
md5sum flag.zip
17f5b08342cf65f6dc08ed0b4c9bd334 flag.zip
推测和MD5加密,zip加密有关
打开图片,数字是zip的16进制数据
010打开
CRC校验码有误,跑个脚本看一下它的正确宽高
高度有问题,改一下,再打开
一看就是zip的16进制,识别不出来,就用无影手敲出来
很快,我们得到:
504B0304140000000800DB93C55086A39007D8000000DF01000008000000666C61672E74787475504B0E823010DD93708771DDCCB0270D5BBD0371815A9148AC6951C2ED9D271F89C62E2693D7F76BB7DE9FC80D2E6E68E782A326D2E01F81CE6D55E76972E9BA7BCCB3ACEF7B89F7B6E90EA16A6EE2439D45179ECDD1C5CCFB6B9AA489C1218C92B898779D765FCCBB58CC920B6662C5F91749931132258F32BBA7C288C5AE103133106608409DAC419F77241A3412907814AB7A922106B8DED0D25AEC8A634929025C46A33FE5A1D3167A100323B1ABEE4A7A0708413A19E17718165F5D3E73D577798E36D5144B66315AAE315078F5E51A29246AF402504B01021F00140009000800DB93C55086A39007D8000000DF010000080024000000000000002000000000000000666C61672E7478740A00200000000000010018004A0A9A64243BD601F9D8AB39243BD6012D00CA13223BD601504B050600000000010001005A000000FE00000000000000
保存一下,打开
Ook!密码,找个网站借一下
flag{wai_bi_baaaa_bo!2333~~~}
png高度隐写;
Ook!密码
打开txt
像是一首小诗,翻译一下
很离谱,居然这么多词儿
搜一搜这个SG是个啥玩意
有一些内容是多余的,查找一下{
这个题目找半天没找到一个完美的原文文档
解题思路大致就是利用beyond compare软件找不同,借个图
多出来的的内容组合到一起就是flag
flag{icantspeel_tiny.cc/2qtdez}
beyond compare
搜索能力
打开txt
这道题没啥思路,常见的几种编码都试了也不行,解题过程参考百度
根据题目提示,一表人才,二表倒立,以及玩具toy,猜测是toy加密
这是一篇介绍toy加密的文章(全英文,看不懂就不看了)
301.pdf (iacr.org)
简单来说,TOY加密有2个过程,
简单写了一下过程,大致就是2次映射,如有错误请指教:
每个字母的加密过程如下图
“一表人才”:
“二表倒立”:
然后就可以借助脚本解一下内容(当然内容很少的话也可以手动解)
list1 = {'M':'ACEG','R':'ADEG','K':'BCEG','S':'BDEG','A':'ACEH','B':'ADEH','L':'BCEH','U':'BDEH','D':'ACEI','C':'ADEI','N':'BCEI','V':'BDEI','H':'ACFG','F':'ADFG','O':'BCFG','W':'BDFG','T':'ACFH','G':'ADFH','P':'BCFH','X':'BDFH','E':'ACFI','I':'ADFI','Q':'BCFI','Y':'BDFI'}
#首先把每个字母的最终映射写出来
list2 = original_list = ['M','R','K','S','A','B','L','U','D','C','N','V','H','F','O','W','T','G','P','X','E','I','Q','Y']
#原始内容会出现的24个字母(Z J已被替换)
list2_re =list2[::-1]
ori_str = 'BCEHACEIBDEIBDEHBDEHADEIACEGACFIBDFHACEGBCEHBCFIBDEGBDEGADFGBDEHBDEGBDFHBCEGACFIBCFGADEIADEIADFH'
#原始字符串,可替换
flag_1 = ''
for i in range(0,len(ori_str),4):
_val = ori_str[i:i+4]
for key, val in list1.items():
if val == _val:
flag_1 += key
print(flag_1)
flag = ''
for i in flag_1:
for j,k in enumerate(list2):
if i == k:
flag += list2_re[j]
print(flag)
跑一下
GWHT是此次羊城杯的flag头
flag{TOYSAYGREENTEAISCOOL}
Toy加密
description
打开发现传输层协议是TLS,并且被加密
文件中还有一个SSLkey文件(SSL3.0就是TLS)
和以前做过的一道题类似,TLS密钥,
打开首选项
打开protocols
下拉找到TLS,导入
打开说明
重点观察一下图片
因为条形码上下都是一样的,而且这张图片“巧合地”露出了每一竖条的一部分
画图打开(不太会PS),猜想把每一竖条码没有被涂鸦的的区域摘出来,然后拉长,组合到一起,扫一扫就行
开干
矩形工具选中每一细竖条没有涂鸦的地方,然后拉伸
中国编码APP扫一扫
flag{way_too_common}
条形码遮挡处理
打开这个游戏
走进左下角这个屋子,遇到了一只鸡,打败这只鸡才能得到flag线索
这只鸟好强,根本打不过,一上来就over了
不行,我要开外挂
这个游戏类型是RPG,那就下载一个RPG
RPG Maker XP | RPG Maker | Make Your Own Game! (rpgmakerweb.com)
新建进程,把Game.rxproj放到She下,然后再次打开进程选择She下的Game.rxproj
打开后我们要对这只鸟的参数进行修改
Tools——database——
参数可以都调成1
然后再当我们打完鸟,往后走,有个幽灵,我们一碰就Game Over
我们编辑事件,先点击箭头的蓝色块
选中幽灵图标右键编辑事件,然后清空事件页就行ROOM1-4但凡有幽灵的都给清除
然后再进入游戏
开挂当然稳赢
然后我们从第一个门开始打开门,发现打不开然后挨个尝试,按照该顺序获取到的数值是371269(第几个门),按照房间顺序排列得到213697。(第一个门是2,第二个门给的数字是1以此类推)
将213697进行md5加密
flag{d6f3fdffbcb462607878af65d059f274}
利用RPG软件开挂