攻防世界-簡單的圖片
1 首先拿到圖片是一張非常樸實的圖片
用010開啟發現沒什麼特別之處
因為是png圖片猜測是lsb隱寫,這裡一開始我用的zsteg發現提取不全
用Stegsolve開啟看看,嘗試了半天發現什麼特殊資訊,最後發現位平面順序即bit plane order這一選項要選擇BGR,得到下圖
發現有一連串的以xsctf這五個字元組成的字串,將他們提取出來得到
['xxfxc', 'xxfst', 'xxtfc', 'xxfxt', 'xxfft', 'xxttc', 'xxffs', 'xxsft', 'xxftc', 'xxtfx', 'xxtfc', 'xxfcf', 'xxfxs', 'xxtfx', 'xxctx', 'xxfcx', 'xxtfx', 'xxsff', 'xxfsf', 'xxtfc', 'xxfxt', 'xxcxs', 'xxtfx', 'xxfsf', 'xxtfc', 'xxftx', 'xxfts', 'xxfxs', 'xxfcf', 'xxsfc', 'xsxxx']
但是這一串字元有什麼用呢,沒什麼思路,最後經大佬提點,發現這是有規律的,而且xsctf是出題者,不妨設想一下,將xsctf按順序用01234代替,這樣我們就得到了一個五進位制列表。最後寫一個指令碼將之轉換為十進位制後再轉換為字串得到flag
flag{\y0u_are_An_1mag3_master/}
附上指令碼:
string = "xxfxcxxfstxxtfcxxfxtxxfftxxttcxxffsxxsftxxftcxxtfxxxtfcxxfcfxxfxsxxtfxxxctxxxfcxxxtfxxxsffxxfsfxxtfcxxfxtxxcxsxxtfxxxfsfxxtfcxxftxxxftsxxfxsxxfcfxxsfcxsxxx"
sum1 = ''
for i in string: # 遍歷字串,將字母替換為對應數字
if i == 'x':
sum1 = sum1 + '0'
elif i == 's':
sum1 = sum1 + '1'
elif i == 'c':
sum1 = sum1 + '2'
elif i == 't':
sum1 = sum1 + '3'
elif i == 'f':
sum1 = sum1 + '4'
num = []
for j in range(0,len(sum1),5): # 將每5位數字作為一個元素新增到列表中
num.append(sum1[j:j+5])
print(num)
flag = []
for number in num: # 將每5位數字轉為十進位制數,並轉換為對應的字元
ss = int(number[0]) * 54 + int(number[1]) * 53 + int(number[2]) * 52 + int(number[3]) * 51 + int(number[4]) * 5**0
flag.append(chr(ss))
print(''.join(flag)) # 列印flag列表中的所有元素,並將它們連線成一個字串