攻防世界-簡單的圖片

我做饭fzw發表於2024-07-28

攻防世界-簡單的圖片

1 首先拿到圖片是一張非常樸實的圖片

IM

用010開啟發現沒什麼特別之處

image-20240728213741864

因為是png圖片猜測是lsb隱寫,這裡一開始我用的zsteg發現提取不全

image-20240728215837701

用Stegsolve開啟看看,嘗試了半天發現什麼特殊資訊,最後發現位平面順序即bit plane order這一選項要選擇BGR,得到下圖

image-20240728214436887

發現有一連串的以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列表中的所有元素,並將它們連線成一個字串

相關文章