
BUUCTF
base64多次解码
脚本:
import base64
def decode(f):
n = 0 # 初始化解码次数计数器
while True:
try:
f = base64.b64decode(f) # 尝试解码Base64
n += 1 # 解码成功,计数器加1
except:
# 解码失败时输出结果
print('[+]Base64共decode了{0}次,最终解码结果如下:'.format(n))
print(str(f, 'utf-8')) # 将字节转换为UTF-8字符串
break # 退出循环
if __name__ == '__main__':
f = open('./flag.txt', 'r').read() # 读取文件内容
decode(f) # 调用解码函数
outguess解密或者steghide解密
根据题目和flag.txt文件提示,猜测为outguess隐写
![[
图片的备用信息,存在社会核心价值观加密
![[Pasted image 20250717152826.png]]
mmm.jpg文件:
![[Pasted image 20250717153048.png]]
有信息,可能就是要outguess解密的文件
abc可能就是outguess隐写(kali)的密钥
解密:
outguess -k 秘钥 -r 加密后的图片 输出文件名[自己命名] //提取文件
![[Pasted image 20250717155619.png]]
steghide解码(随波有):
steghide extract -sf 图片文件载体 [-p 密码也可能不设] //提取文件
//在 图片文件载体 中提取隐藏的文件.
十六进制转字符串(坐标),坐标绘制二维码
文件隐写16进制,分离出后用脚本转化字符串成坐标
![[Pasted image 20250717162540.png]]
用gnuplot工具转坐标为二维码
在使用gnuplot之前需要先将坐标格式转换成gnuplot可以识别的格式:
with open('result.txt', 'r') as res: # 坐标格式文件比如(7,7)
re = res.read()
res.close()
with open('gnuplotTxt.txt', 'w') as gnup: # 将转换后的坐标写入gnuplotTxt.txt
re = re.split()
tem = ''
for i in range(0, len(re)):
tem = re[i]
tem = tem.lstrip('(')
tem = tem.rstrip(')')
for j in range(0, len(tem)):
if tem[j] == ',':
tem = tem[:j] + ' ' + tem[j+1:]
gnup.write(tem + '\n')
gnup.close()
转化后,打开gnuplot.exe
输入:
plot "文件绝对路径"
![[Pasted image 20250717165201.png]]
![[Pasted image 20250717165329.png]]
盲文加密解密
注意:盲文如果是从虚拟机里面复制出来的,还需要复制到文本一边,才能进行转
![[Pasted image 20250717172234.png]]
随波盲文解密:
![[Pasted image 20250717173818.png]]
音频隐写---摩斯密码
音频文件,放到Audacity看看。看到有两条音轨,放大下面的那条音轨,看到这一串音频,有很多分组,分组内由粗的音块和细的音块组成,类似莫尔斯电码的“-”和“.”,同时明显听出是摩斯密码
![[Pasted image 20250717174719.png]]
图中标红的就是两段摩斯密码提现
按照第一个红框代表“.“,第二个”-”,第三个红框代表“ ”(空格):
![[Pasted image 20250717175032.png]]
注意两个摩斯中间有空隙但不代表是空格
第一段:..-. ----- ..--- ----. -... -.. -.... ..-. ..... ..... .---- .---- ...-- ----. . . -.. . -... ---.. . ....- ..... .- .---- --... ..... -... ----- --... ---.. -....
第二段:..-. ----- ..--- ----. -... -.. -.... ..-. .....
![[Pasted image 20250717175310.png]]
![[Pasted image 20250717175357.png]]
两段明文字符有重复,将第一段转换为小写字母,作为flag值。(符合题目的要求:小写的32位字符)
多个base64解码
![[Pasted image 20250717180250.png]]
利用脚本跑:
base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
binstr=""
strings = open('./base64.txt').read()
e = strings.splitlines()
for i in e:
if i.find("==") > 0:
temp = bin((base64.find(i[-3]) & 15))[2:]
# 取倒数第3个字符,在base64找到对应的索引数(就是编码数),取低4位,再转换为二进制字符
binstr = binstr + "0" * (4 - len(temp)) + temp # 二进制字符补高位0后,连接字符到binstr
elif i.find("=") > 0:
temp = bin((base64.find(i[-2]) & 3))[2:] # 取倒数第2个字符,在base64找到对应的索引数(就是编码数),取低2位,再转换为二进制字符
binstr = binstr + "0" * (2 - len(temp)) + temp # 二进制字符补高位0后,连接字符到binstr
str = ""
for i in range(0, len(binstr), 8):
str = str + chr(int(binstr[i:i + 8], 2)) # 从左到右,每取8位转换为ascii字符,连接字符到字符串
print(str)
NTFS 交换数据流 实现隐藏文件
NTFS交换数据流(Alternate DataStreams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流。通俗的理解,就是其它文件可以“寄宿”在某个文件身上。利用ADS数据流,我们可以做很多有趣的事情,同时对于企业安全来说这类问题也隐藏着巨大的风险。
例如:txt文件“寄宿”在txt文件上
方法一:
在1.txt文件所在的文件夹,右键选择“在终端中打开”,打开命令行输入以下命令,回车打开flag.txt文件
![[Pasted image 20250717182348.png]]
方法二:
可以用NtfsStreamsEditor或AlternateStreamView工具打开存放1.txt文件的文件夹,扫描出现隐藏文件文件
字频分析
将文本中出现的字符次数统计安装大到小的顺序排序,输出
脚本:
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- =\\{\\}[]"
strings = open('C:/Users/HelloCTF_OS/Desktop/脚本\MISC/字频分析工具/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="")
![[Pasted image 20250717184459.png]]
凯撒加密
![[Pasted image 20250717184846.png]]
JS颜文字加密的密文(AAEncode编码)
![[Pasted image 20250717185345.png]]
![[Pasted image 20250717185441.png]]
16进制的rar压缩包格式
文件头52617221,这其实是RAR文件的十六进制签名
一个rar的压缩包hex转化为了16进制,只需将16进制转化为字节(hex)即可
将txt放入随波,利用工具转hex,后缀改为rar
![[Pasted image 20250717190049.png]]
010editor的ebcdlc编码
![[Pasted image 20250717191357.png]]
根据提示,该密码就是:摂m墷m卪倕ⅲm仈Z
只不过是因为某种编码导致乱码了,用010editor的ebcdlc编码打开看看
![[Pasted image 20250717191540.png]]
![[Pasted image 20250717191649.png]]
得到密码wllm_is_the_best_team!