攻防世界Misc wp(1)

一、hit-the-core

1、在linux下對下載的文件使用strings進行查看。
使用命令爲sring 文件名 | grep {
在這裏插入圖片描述
發現一串字樣的字符串,觀察未來,發現。從第3個字符開始每個4個字符就有一個大型字母。寫python腳本提取大寫字母

a = "cvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}"

flag = ""
for i in range(3, len(a), 5):
    flag = flag + a[i]

print(flag)

輸出

ALEXCTF{K33P_7H3_g00D_w0rk_up}

二、 2-1

爆破crc校驗所需要了解到的PNG文件頭知識
- (固定)八個字節89 50 4E 47 0D 0A 1A 0A爲png的文件頭
- (固定)四個字節00 00 00 0D(即爲十進制的13)代表數據塊的長度爲13
- (固定)四個字節49 48 44 52(即爲ASCII碼的IHDR)是文件頭數據塊的標示(IDCH)
- (可變)13位數據塊(IHDR)
    - 前四個字節代表該圖片的寬
    - 後四個字節代表該圖片的高
    - 後五個字節依次爲:
    Bit depth、ColorType、Compression method、Filter method、Interlace method
- (可變)剩餘四字節爲該png的CRC檢驗碼,由從IDCH到IHDR的十七位字節進行crc計算得到。

思路、發現圖片打不開,使用winhex打開,發現PNG文件文件頭不對,修改圖片文件頭,發現還是打不開,繼續觀察,發現是文件寬度爲0,然後使用腳本利用CRC爆出寬度

import struct, binhex
import binascii
misc = open("33.png","rb").read()

for i in range(1024):
    data = misc[12:16] + struct.pack('>i',i)+ misc[20:29]
    crc32 = binascii.crc32(data) & 0xffffffff  # 取crc32的八位數據
    if crc32 == 0x932f8a6b:
        print(i)

修改寬度爲輸出的i的值就可以,注意winhex裏面對應的是16進制,我們輸出的是10進制,應該
i=hex(i) 就可以轉換爲16進制

三、János-the-Ripper

第一步,下載文件發現,一個未知格式的文件,使用winhex打開發現是zip文件,於是修改後綴名爲zip。發現裏面有一個加密的flag.txt文件。
第二步,我們可以考慮下僞加密,最簡單的辦法就是利用winrar的工具中的修復壓縮文件功能(也可以使用winhex查看標識位進行判斷,可以查看這篇文章),
第三步、利用ziperello進行爆破,發現密碼,即可得到flag
在這裏插入圖片描述

四、2017_Dating_in_Singapore

第一步,題目給了一大堆數字,而且一段數字之間有橫杆,下載的附件裏有個新加坡的2017年的日曆。於是猜想與日曆有關

第二步,觀察橫杆數目剛好有12個,而且數字應該是2個數字爲一個單位,沒有超過31的。

第三步,在日曆上按數字連線,既得得出flag。
z總結;出題人腦洞很大

五、神奇的Modbus

第一步,查看題目描述爲尋找flag,提交格式爲sctf{xxx}。那麼我們就開始查找sctf.

第二步:使用warseshark的查找功能,成功找到flag,不過這個有個小坑,flag爲sctf{Easy_Modbus}
在這裏插入圖片描述

六、4-1(盲水印)

第一步:下載文件,使用winhex打開圖片,發現圖片裏包含其他文件。
第二步:直接修改文件後綴名爲zip後發現一個一個壓縮包和一個提示文件。

第三步:壓縮包裏有兩張照片,想到在stegsolve中比較一下或者是盲水印攻擊。stegsolve中比較,發現有條紋狀的東西,懷疑是盲水印攻擊。

第四步:根據提示文件,dag2.png中應該是含有盲水印的圖片。

這邊介紹下盲水印攻擊的使用方法
提取圖片中的盲水印:

python bwm.py decode 無水印圖片 有水印圖片 提取出的圖片

合成盲水印圖片:

python bwm.py encode 無水印圖片 水印 有水印圖片

bwm腳本的gitHub下載地址
由於盲水印的腳本運行環境爲python2,還得需要安裝python2的庫,我的過程如下:

python2 -m pip install --upgrade pip

由於用到cv2這個庫,所以安裝

pip install opencv-python

最後安裝:

pip install matplotlib

之後就可以成功運行腳本,執行以下命令

python2 bwm.py decode day1.png day2.png flag.png

在使用pip安裝包的時候這邊可能會報錯,

UnicodeEncodeError: 'ascii' codec can't encode character u'\u258f'

原因是pip安裝python包會加載用戶目錄,用戶目錄恰好是中文的,ascii不能編碼

打開對應的安裝目錄路徑如 D:\Python27\Lib\site-packages

新建一個文件 sitecustomize.py 輸入下面內容

# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('gb2312')

注意:裏面是gb2312 如果寫成utf-8的話安裝的時候就會出現下面亂碼的情況,但是也能安裝成功,如果gb2312 不行的話就試試換成utf-8,每個人的環境不一樣

七、5-1(xortool的使用)

使用winhex查看未果,使用xortool查看,發現13機率最大
在這裏插入圖片描述
使用命令 xortool 1 -l 10 -c 20
在這裏插入圖片描述
嘗試出了key:GoodLuckToYou,對原文件進行異或,腳本如下:即可得出flag.

import os

c = open("1",'rb').read()
key = "GoodLuckToYou"
def xor(c,k):
	 keylen = len(k)
 	 res = ""
	 for pos,c in enumerate(c):
		 res +=chr(ord(c) ^ ord(k[pos % keylen]))
	 return res 
print xor(c,key)

八、can_has_stdio?

在這裏插入圖片描述
打開文件,發現是trainfuck編碼,在線解密,即可得到flag

十、MISCall

使用winhex打開,發現該文件爲壓縮文件,故修改文件後綴名爲zip,
在這裏插入圖片描述
對壓縮包裏的文件進行一次上面操作,我們發現了.git文件。(flag.txt文件裏不是flag)

查看git記錄
git log
在這裏插入圖片描述

用如下命令查看修改的文件列表

git stash list

在這裏插入圖片描述
有東西,然後校驗一下存儲的文件列表

git stash show 

在這裏插入圖片描述
運行,s.py文件得到flag
在這裏插入圖片描述
補充
git stash 的作用

git stash用於想要保存當前的修改,但是想回到之前最後一次提交的乾淨的工作倉庫時進行的操作.git stash將本地的修改保存起來,並且將當前代碼切換到HEAD提交上.

通過git stash存儲的修改列表,可以通過git stash list查看.git stash show用於校驗,git stash apply用於重新存儲.直接執行git stash等同於git stash save.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章