winhex在ctf中簡單的使用

  • 2019 年 10 月 8 日
  • 筆記

winhex簡介

WinhexX-Ways公司出品的一款 十六進位編輯磁碟編輯軟體,其公司網站對其功能介紹如下:

  • 可以對硬碟、軟盤、CD-ROM、DVD、ZIP及各種存儲卡進行編輯
  • 支援FAT、NTFS、Ext2/3、ReiserFS、Reiser4、UFS、CDFS、UDF等文件系統
  • 可支援重組RAID及動態磁碟
  • 附帶數據恢復功能
  • 可以訪問物理記憶體及虛擬記憶體
  • 內置數據解釋器,可以識別解釋20種數據類型
  • 可以用數據結構模板查看、編輯結構數據
  • 可以分割與合併文件
  • 可以對文件進行分析與對比
  • 具有靈活的搜索和替換功能
  • 可以對磁碟進行克隆
  • 可對磁碟進行壓縮鏡像備份,支援對備份文件進行分卷處理
  • 具有編程介面,支援腳本操作
  • 支援256位加密、校驗和、CRC32、hash(MD5,SHA-1)計算
  • 支援對磁碟進行數據安全銷毀
  • 包含ANSI ASCII, IBM ASCII, EBCDIC, Unicode字符集
  • 支援文件大小超過4GB

從上面官網介紹可以看出:winhex功能非常豐富,也很強大,具體的功能使用介紹這裡就不說了,童鞋們有興趣可以去 安恆萌新粉絲群:928102972群文件下載 《最完整的winhex教程集合+winhex數據恢復入門使用教程》工具(X-WaysWinHex19.6-SR0 x86/x64綠色漢化版)

這裡就談談winhex在CTF中的簡單應用,歡迎各位大佬在評論區發表高端的操作技巧或者經驗分享。

十六進位編輯

這個功能也是最常用的,ctf中經常會用來 查看十六進位數據和ascii碼修改文件頭修改圖片IHDR等。

查看十六進位數據和ascii碼

把目標文件直接拖進 winhex或者 文件——>打開——>選擇要打開的文件

會有些送分題,打開直接 ctrl+f,輸入搜索 flag,會有意想不到的驚喜

這裡也就比直接給flag多了個ascii編碼

修改文件頭

在CTF經常會遇到 打開文件錯誤或者 無法打開文件,但是又已知 文件格式後綴的 可以檢查一下文件頭或者文件尾是否完整。 常見文件文件頭文件尾格式總結及各類文件頭

例如下面這題:

發現這個gif文件打開錯誤,發現缺少文件頭。 游標點擊第一個字元處,點擊 編輯——> 粘貼0位元組——>在彈窗中輸入0位元組數的輸入框里輸入 4——>確定

發現多了4個位元組的空位,然後點擊十進位值 00,依次在鍵盤裡輸入gif的文件頭 47494638,然後點擊保存

發現圖片可以正常打開了

然後用一些看圖軟體或者gif編輯工具,逐幀查看記錄下flag即可 這裡推薦一個在線轉換編輯gif的工具https://ezgif.com/功能很豐富。

修改圖片IHDR

文件頭數據塊IHDR(header chunk):它包含有PNG文件中存儲的影像數據的基本資訊,並要作為第一個數據塊出現在PNG數據流中,而且一個PNG數據流中只能有一個文件頭數據塊。 文件頭數據塊由13位元組組成,它的格式如下表所示。

有時候我們拿到的圖片可能是顯示不完全的

這裡查看到十六進位高度值

這時候就可以去嘗試修改IHDR中的寬高值。這裡只要修改高度值為 027F

最終效果

修改軟體介面名字

這個也可以用很多資源工具實現,比如 reshack,用winhex手動也可以實現 前提: 確定原始的軟體被替換的文字,必須是軟體存在的,而且替換文字長度不能比被替換文字長,否則程式就可能被破壞了,可能導致程式無法正常運行哦。 這裡我拿 godofhack演示,對就是這個屌炸天的工具,黑客神器,誰用誰知道!

這裡把 一鍵錘爆出題人的頭改成 安恆大學是最可愛的

首先查詢出這些文字的ASCII編碼值

一     鍵     錘     爆     出     題     人     的     頭  0x4e00;0x952e;0x9524;0x7206;0x51fa;0x9898;0x4eba;0x7684;0x5934;  安     恆     大     學     是     最     可     愛     的  0x5b89;0x6052;0x5927;0x5b66;0x662f;0x6700;0x53ef;0x7231;0x7684;

得到了每一個字的編碼,我們來組合一下完整的十六進位存儲序列。我們不看0x,每一個編碼只剩下4個數字,後面兩位放在前面,前面兩位放在後面,那麼 一鍵錘爆出題人的頭的完整的十六進位序列為 004e2e9524950672fa519898ba4e84763459替換成 895b52602759665b2f660067ef5331728476 最終效果如下

修改其他字元也是一樣的原理。

其他

CTF還會遇到一些幾個文件合併成一個的,那種可以用 File_Analysis這個工具簡單分析一下,然後打開winhex搜索文件頭尾講數據塊複製出來另存實現文件分離。linux里可以用binwalk -e 文件名。 還有一些 修改軟體介面名字記憶體編譯磁碟編輯數據恢復等更高級的功能就讓小夥伴們自行探索吧

文中用到的附件:https://pan.baidu.com/s/1nYwzHlXSYhZGMqN3yLmRmQ