由八种字符构成,很明显是brainfuck,解密网站http://ctf.ssleye.com/brain.html
说图下面什么都没有,逆向思维图下有东西,转换为word即可flag{security_through_obscurity}
https://blog.csdn.net/ajianyingxiaoqinghan/article/details/78837864
flag{e7d478cf6b915f50ab1277f78502a2c5}
找到判断语句找到flag,然后将flag中的内容base64解密即可
打开后是一堆黑白的图片,就把黑色看做1白色看做0,利用python脚本
white = open("./0.jpg","rb").read()
black = open(“./1.jpg”,“rb”).read()
flag_dic = “”
for i in range(104):
with open("./%d.jpg"%i,"rb") as f:
if f.read() == white:
flag_dic += "0"
else:
flag_dic += "1"
print(flag_dic)
1、报文内容为0-9,a-f,考虑十六进制。把十六进制两两一组转换为十进制(如c8、e9…)
2、接着将十进制数减128(因为ASCII码值为0-127),让其落到ASCII码表上,然后计算出对应ASCII码值的字符,获取flag.
a = ‘c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2’b = [int(‘0x’+a[x:x+2],16) for x in range(0,len(a),2)]print(’'.join([chr(x%128) for x in b]))
再用rot-13解密后发现还有base64 加密,解密即得到flag
打开图片后发现是一堆英语,根据题目提示,flag存在于图片中,所以尝试将PDF转化为TXT格式打开,经过尝试后发现将PDF用浏览器打开后复制到TXT文档里可以看到由AB构成的字符串,第一时间想到的是培根密码
但是不符合AB字符的分组方式,猜测是摩斯密码A->- B->. && A->- B->.
编写python脚本(虚假的操作)或者在word中进行替换(真正的操作)
string = "BABA BBB BA BBA ABA AB B AAB ABAA AB B AA BBB BA AAA BBAABB AABA ABAA AB BBA BBBAAA ABBBB BA AAAB ABBBB AAAAA ABBBB BAAA ABAA AAABB BB AAABB AAAAA AAAAA AAAAB BBA AAABB"
string = string.replace('A','.')
string = string.replace('B','-')
print(string)
一个ZIP文件由三个部分组成:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志。
伪加密原理:zip伪加密是在文件头的加密标志位做修改,进而再打开文件时识被别为加密压缩包。
打开文件后发现是base64加密的一堆字符串,但觉得不太对,从网上找的脚本跑的,大概意思就是靠结尾的几个字符存储信息
解密脚本
def get_base64_diff_value(s1, s2):
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
res = 0
for i in xrange(len(s1)):
if s1[i] != s2[i]:
return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
return res
def solve_stego():
with open('stego.txt', 'rb') as f:
file_lines = f.readlines()
bin_str = ''
for line in file_lines:
steg_line = line.replace('\n', '')
norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n', '')
diff = get_base64_diff_value(steg_line, norm_line)
pads_num = steg_line.count('=')
if diff:
bin_str += bin(diff)[2:].zfill(pads_num * 2)
else:
bin_str += '0' * pads_num * 2
res_str = ''
for i in xrange(0, len(bin_str), 8):
res_str += chr(int(bin_str[i:i+8], 2))
print res_str
solve_stego()
从FFD8到FFD9将字段复制出来,以16进制阿斯克码的形式复制到whinx创建的文件中,打开就可以看到解压密码
个人博客空の城.