攻防世界进阶区MISC ——56-60
56.low
得到一张bmp,世纪之吻,扔进kali中,binwalk,zsteg,无果,再放进stegsolve中,虽然发现小的数据块,但是过滤通道得不到任何信息,猜测是要用脚本进行
# lsb隐写
import PIL.Image as Image
img = Image.open('low.bmp')
img_tmp = img.copy()
pix = img_tmp.load()
width,height = img_tmp.size
for w in range(width):
for h in range(height):
if pix[w,h]&1 == 0:
pix[w,h] = 0
else:
pix[w,h] = 255
img_tmp.show()
处理后得到一张有二维码的图片

扫描后得到flag

57.misc1
题目中得到一串字符:d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7e2b6b1e4b2b6b9e2b1b1b3b3b7e6b3b3b0e3b9b3b5e6fd
参考了一下WP,得知是先将字符串两个一组,当做十六进制转化为十进制,再将每个值减去128,再作为ascii转化为字符串就可以得到flag
java代码脚本:
public class Main {
public static void main(String[] args) {
String str = "d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7e2b6b1e4b2b6b9e2b1b1b3b3b7e6b3b3b0e3b9b3b5e6fd";
int count = 0;
for (int i = 0; i < str.length(); i++) {
count++;//计数,保证两个为一组
if (count == 2) {
String sp_str = str.charAt(i - 1) + "" + str.charAt(i);// 两个为一组作为十六进制
Integer inte = Integer.parseInt(sp_str, 16);//转化为十进制
char ch = (char) (inte - 128);// 作为ascii转化为字符串
System.out.print(ch);
count = 0;
}
}
}
}
python代码脚本:
string = 'd4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7e2b6b1e4b2b6b9e2b1b1b3b3b7e6b3b3b0e3b9b3b5e6fd'
str = ''
for i in range(0, len(string), 2):
str += chr(int(string[i : i + 2], 16) - 128)#两个为一组,转化为十进制,转化为ascii
print(str)
得到flag

58.challenge_how_many_Vigenère
得到一串字符,猜测是加密了,题目有关键词维吉尼亚,用这个网站:https://www.guballa.de/vigenere-solver

注意用的时候,language选择English,Key Length填写3-100,得到解密后的内容,是爱丽丝梦游仙境,将Alice’s Adventures in Wonderland,根据题目,将所有的字符删去,将大写改为小写,用之前解密时得到的key加密:ohihzkssefkmqxqbkihybnynvndzkdlqvhwhgywaftmeteecqprzjczvnmhnzwyasmlwbwvaqitejbfofycejjlcbpk

得到字符串用LCTF{xxxxxxx}包装一下,得到flag
LCTF{osqjdcsvzjxfkoutsvdmoqcegnqc}
59.Miscellaneous-300
得到真加密的zip,没有任何提示,想起之前做过的一道题就是将zip的名字作为密码,试一下,解开了

多尝试了几个,发现都是这样的,网上找的脚本:
import zipfile
import re
file_name = 'pic/' + 'f932f55b83fa493ab024390071020088.zip'
while True:
try:
zf = zipfile.ZipFile(file_name)
re_result = re.search('[0-9]*', zf.namelist()[0])
passwd = re_result.group()
zf.extractall(path='pic/', pwd=re_result.group().encode('ascii'))
file_name = 'pic/' + zf.namelist()[0]
except:
print("get the result")
这个脚本需要运行好长时间,最后得到一个加密的zip,用ARCHPR暴力破解,解密后,将音频扔入Audacity中观察频谱图,果然有发现

得到的就是flag
60.很普通的Disco
得到一个WAV,扔入Audacity中,看了一下频谱图,没有发现,观察开头,放大,正常都是波形图,而开头单独有一段是断点式图,有问题


将其转化为高为1,低为0,转化为二进制:
110011011011001100001110011111110111010111011000010101110101010110011011101011101110110111011110011111101
二进制转十进制再转字符串
脚本:
a='110011011011001100001110011111110111010111011000010101110101010110011011101011101110110111011110011111101'
flag=''
for i in range(15):
b=a[i*7:i*7+7]
c=int(b,2)
flag+=chr(c)
print(flag)
得到flag


浙公网安备 33010602011771号