MISC中的圖片修改寬高問題


在做CTF中MISC分類題目時,很常見的一個問題就是修改圖片正確的寬與高
(此篇筆記中的內容以ctfshow中MISC入門分類為切入點,感興趣的同學可以一邊做一邊有不會的看看,僅供參考,我是菜雞)
曾經狠狠地被{there is no flag}教育了

  • bmp圖片口算圖片的寬與高(MISC24)
    首先,我們在010editor中可以找到圖片此時的寬與高分別為900*150

    同時,在010editor的最后一行可以看到結尾有4個0由windows自動補充,那么實際的像素點就是675040(0xA4CE0)+13=645053個像素點

    因為BMP的頭部占據了53個,那么我們原本有645000個。
    由因為有3個RGB通道,那么645000/3=225000個像素點,本題中款式沒有問題的,那么215000/900=250即為圖片正確的高,在010editor中修改高,即可得到flag。

    要注意:bmp圖片的寬高值在十六進制數據中是倒置的!!!

  • PNG圖片由crc32爆破寬與高(MISC25/26)
    此處貼一crc爆破的jio本:

import struct
import binascii
import os
 
m = open("flag.png","rb").read()
k=0
for i in range(5000):
    if k==1:
        break
    for j in range(5000):
        c = m[12:16] + struct.pack('>i', i) + struct.pack('>i', j)+m[24:29]
        crc = binascii.crc32(c) & 0xffffffff
        if crc == 0x889C2F07:
        #目標圖片對應的crc值
            k = 1
            print(hex(i),hex(j))
            break

根據腳本對圖片正確的寬高進行爆破,得到后在010中修改即可得到flag。

  • JPG圖片(MISC27)
    emm這個題,其實就是盡可能地將高搞大,在010editor中可以找到對應寬高的位置,進行修改即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM