攻防世界MISC新手练习
0x01 this_is_flag
对!!!这就是flag
0x02 ext3
题目提示是Linux光盘,附件下载下来
在linux中挂载
找一下flagtrings linux | grep flag
,发现在这个路径~root/Desktop/file/O7avZhikgKgbF/flag.txt
ZmxhZ3tzYWpiY2lienNrampjbmJoc2J2Y2pianN6Y3N6Ymt6an0=
Base64 Decode flag{sajbcibzskjjcnbhsbvcjbjszcszbkzj}
0x03 give_you_flag
附件下载下来是一个gif,Stegsolve打开,使用Analyse中的Frame Browser一张一张看,到50张会有一个残缺二维码
二维码缺失的部分是它的3个定位点,想办法补全,扫描得到flag{e7d478cf6b915f50ab1277f78502a2c5}
0x04 pdf
附件是一个pdf,pdf中文字设置成了透明的直接复制出来就好
flag{security_through_obscurity}
0x05 坚持60s
一个Java的游戏,直接解压,用java反编译工具反编译,在文件中可以找到PlaneGameFrame.class中找到flag,再将大括号中base64解码就行了。
0x06 如来十三掌
下载下来时一堆很有佛性汉字,看了看,猜测与佛论禅
得到一串MzkuM3gvMUAwnzuvn3cgozMlMTuvqzAenJchMUAeqzWenzEmLJW9
直接Base64 Decode不行,看题目十三掌,
ROT13解密得到ZmxhZ3tiZHNjamhia3ptbmZyZGhidmNraWpuZHNrdmJramRzYWJ9
再Base64 Decode 得flag{bdscjhbkzmnfrdhbvckijndskvbkjdsab}
0x07 gif
附件解压后,发现一堆黑白照片,一共104张
白色为0,黑色为1得到
01100110011011000110000101100111011110110100011001110101010011100101111101100111011010010100011001111101
二进制转字符串得到fflag{FuN_giF}
0x08 SimpleRAR
下载下来是一个rar压缩包,直接解压只有一个flag.txt文件,但是打开只是提示flag is not here
binwalk分析没有发现,使用winhex打开,发现又secret.png,但是16进制文件头有问题,将7A改成74
重新解压得到一个空白得png文件使用binwalk分析是一个gif,将后缀修改
用Stegsolve打开,使用Analyse中的Frame Browser分离出两个图片以png方式保存,再分别用Stegsolve打开,调整通道可以得到如下图片
将两张图片拼接在一起,并补全定位点,扫描得到flag{yanji4n_bu_we1shi}
0x09 stegano
附件是一个pdf,打开不能看出什么,binwalk和winhex也没有发现什么,使用firefox的开发者工具pdf.js,控制台输入:document.documentElement.textContent
将A转为 . B转为-,得到摩斯密码
-.-. --- -. --. .-. .- - ..- .-.. .- - .. --- -. ... --..-- ..-. .-.. .- --. ---... .---- -. ...- .---- ..... .---- -... .-.. ...-- -- ...-- ..... ..... ....- --. ...--
翻译后CONGRATULATIONS.FLAG:JNV151BL3M3554G3
最后答案为FLAG{JNV151BL3M3554G3}
0x10 掀桌子
题目给了一串字符串
c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2
两个一位,16进制转10进制,然后减去128再转成字符,贴上解密代码
string = "c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2"
flag = ''
for i in range(0,len(string), 2):
s = "0x" + string[i] + string[i+1]
flag += chr(int(s, 16) - 128)
0x11 功夫再高也怕菜刀
附件是一个wireshark得文件,使用foremost可以分离出一个有密码的压缩包
使用wireshark打开,分组字节流搜索flag
再追踪TCP流,追踪到di7个的时候,发现有一个666.jpg,
前面也刚好有一大串FFD8FF开头的16进制,可以看出是jpg
写(抄)了一段C#代码,转成jpg
public static void hexToJPG()
{
FileStream fs = new FileStream("E:\\study\\CTF\\test.jpg", FileMode.Create, FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs);
StreamReader sr = new StreamReader("E:\\study\\CTF\\test.txt");
while (sr.Peek()!=-1)
{
string tempStr = sr.ReadToEnd();
int tlenth = tempStr.Length / 2;
int pos = 0;
string[] str = new string[tlenth];
for (int i = 0; i < tlenth; i++)
{
str[i] = tempStr.Substring(pos, 2);
pos = pos + 2;
string cc = str[i];
byte tempByte = Convert.ToByte(str[i], 16);
bw.Write(tempByte);
}
}
fs.Close();
bw.Close();
sr.Close();
}
得到密码后,解压缩压缩包得到flag.txt,打开flag{3OpWdJ-JP6FzK-koCMAK-VkfWBq-75Un2z}
0x12 base64stego
附件压缩包在win中解压有密码,在linux中,直接binwalk -e flag.zip
可以直接得到一个stego.txt文件,原压缩包是未=伪加密,txt文件是一堆字符串
判断是使用的Base64隐写,直接贴上py代码解密,得到flagflag{Base_sixty_four_point_five}
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()
0x13 真是太菜了,今天的我也是个卑微的弟弟呢!