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 真是太菜了,今天的我也是個卑微的弟弟呢!


