記一次CTF比賽過程與解題思路-MISC部分
前言
最近好久沒更新部落格和公眾號了,有朋友問是不是在憋大招,但我不好意思說其實是因為最近一段時間太懶了,一直在當鹹魚…
意識到很久沒更新這個問題,我是想寫點什麼的,但好像一直當鹹魚也沒啥可分享的,最近剛參加了一個CTF比賽,來分享一些作為CTF小白的解題過程和思路~
由於篇幅太長,所以本文第一篇就先只發MISC部分,相比較於固定類型的幾種題目,MISC是最好玩的,比較考驗知識廣度和想像力(而且有簽到題)
推薦滲透測試工具
比賽回顧
大概看下這次比賽有哪些題
MISC
下載下來是個PDF,裡面只有一張圖,啥也沒有
嘗試轉換成word,得到flag
Ext Alpha
看一下題目,啥提示也沒有,好吧,先下載來看看
打開是個亂碼文件
嗯… 感覺二進位文件,丟binwalk分析一下
分析不出來… 又嘗試用UE和HEdit之類的16進位編輯器打開,但沒啥用,難道是什麼其他奇怪的二進位格式嗎,我再試試
找了個Python的文件轉換腳本試試,結果還是不行
最後看了官方的writeup,才知道有種文本編碼格式叫 Ext Alpha
無語 =.=,從一開始我的思路就不對了
官方的WriteUp是用Word來打開這個文件。。如下:
我們先用txt打開,看一下:
亂碼,我們需要換種方式打開。這時可以考慮嘗試用word打開。因為word對於初始文本編碼下多數字體不常見時會彈出換字體編碼窗口。如下:
Windows簡體中文文本編碼出現亂碼,我們可以考慮換其他編碼:
可見,Ext Alpha就是這個misc txt文本的編碼格式。flag就是:flag{0a07c11e46af753fd24d40023f0fdce1}
題目名稱就叫Ext Alpha
,結果文件編碼就是這個,這是真的沒想到,我的經驗還是太少啊~
而且這個編碼格式是真的小眾的那種,我都搜不到…
只能說,學到了,666
dddns
又是沒有啥提示的一道題,先下載附件吧
下載下來是個壓縮包,裡面有個wireshark的流量包
打開裡面都是DNS流量包
分析一下DNS流量特徵
從中得到兩個資訊:
- 根域名為:b.dns.xibai
- 關鍵字特徵
type NULL
:可知該流量包中的流量就是基於iodine這一工具建立的DNS隧道的流 量
官方writeup里也有一個腳本,應該也是網上哪裡找的~ 這裡官方的writeup說:
「注意不要使用pyshark庫,其解析DNS中的域名資訊時會將非ascii字元解析為其他值的亂碼,直接手動實現一個建議的DNS流量解析功能即可」
wireshark抓包分析什麼的這塊我不太熟(大學電腦網路沒認真學),但參考文章里的分析,找到一個現成的腳本,可以解密iodine流量(解析DNS流量中傳遞的明文請求和響應)
程式碼就不貼,是在這裡找到的:hxp CTF 2017 – Write-ups | Rawsec
運行之後就解出來
Successfully extracted 23 packets into test.pcapng
重新用wireshark打開,追蹤TCP流
flag出來了!
簽到2
題目提示「Base64÷4」,但base64解碼解不出來,base16也解不出,猜測16進位hex轉字元串,成功解出flag
normal_png
題目依然沒東西
下載下來看看,就簡單一張圖
老規矩,binwalk分析一下
果然不是簡單的圖片,暗藏玄機。拉出Hex Editor,這波修改png的高度,就可以把隱藏的東西顯示出來
將03 6b
改為04 6b
可以看到flag出來了
BBB
繼續沒題目
文件是個壓縮包,打開裡面有python程式碼
打開看看
看起來這是一段加密程式碼,第13行的注釋是加密後的密文。
所以這裡就根據這個加密函數寫一個解密的,把密碼放進去解密
根據程式碼,加密的思路是先生成一個隨機數(1-100之間),將明文中每個字元的ASCII碼值與生成隨機數異或,然後將異或的結果base64編碼,再進行逆序得到密文。
逆向思維寫解密程式碼,先將密文base64解碼之後逆序,然後爆破隨機數得到flag
def decode(enc):
tmp = base64.b64decode(enc[::-1])
for k in range(1, 100):
flag = ""
for i in tmp:
flag += chr(ord(i) ^ k)
if "flag" in flag:
return flag
PS:python3的話要把
flag += chr(ord(i) ^ k)
改成flag += chr(i ^ k)
運行一下
print(decode('=Q2Lh8SLusyfvg3K4pXIt0iKrwyfgwyLrwXfhESL/pyLgImf4V3f'))
爆破出:flag{963f488de2659f523448ca2a6f274686}
長安沒有秋天
沒題目,起了這個名字不知道是啥
又是壓縮包,哦吼是個損壞的壓縮包
有注釋,有加密
flag就在裡面那個文件里,那就來看看這個密碼是啥咯
首先是這個注釋key2{736e6f772a32}
,看起來應該是16進位字元串,解碼一波得到snow*2
試了下snow*2
和snowsnow
密碼都不對,不過題目哪有這麼簡單的,既然這個是key2,那應該還有個key1。
聯想到剛才打開壓縮包的時候提示損壞,那這個壓縮包應該還暗藏什麼玄機,用010 editor打開看看~ 果然藏了點私貨在裡面
這裡key1就拿到了:key1{666c61672a33}
,繼續16進位解碼一下
試著用flag*3
和flagflagflag
這個密碼解壓flag,成功了,不過這文件……有點奇怪
看似空白文件,其實是有東西的
結合前面key2有個snow*2
,聯想到是snow隱寫,密碼應該是snowsnow~
參考:
- CTF之隱寫術筆記 – 簡書 (jianshu.com)
- CTF-MISC隱寫總結 – FreeBuf網路安全行業門戶
- Snow – Whitespace Steganography Tool (sbmlabs.com)
- SNOW工具下載:The SNOW Home Page (darkside.com.au)
用snow工具來解碼試一試:
Nice!flag到手!下一題~
黑客入侵
MISC部分的最後一題了~ 這次居然有提示,不過沒啥用
下載下來依然是壓縮包,還套娃
那我繼續解壓
還有個說明
就是要分析流量識別出webshell唄,那就開始,先wireshark打開分析
過濾http協議,看到都是192.168.68.128
這個IP的請求
追蹤一下TCP流,Host: 192.168.68.128:9080
,埠9080
提示里要的是黑客最後用的木馬文件名,所以找到no數值最大的一個HTTP請求包
所以最後一個木馬名稱是:tlswslhaoev4lva.php
接下來就是要找「一個著名的webshell管理工具的名字」了,繼續追蹤TCP流
流量加密了,繼續
好了,這裡只能靠經驗了,或者主流的Webshell管理工具就這幾個,一個個嘗試看看
- godzilla
- caidao
- antsword
- behinder
這個特徵應該是godzilla,接下來計算一下md5就能得出flag了~
在線工具:MD5在線加密(HASH)工具 – 010tools
最後flag:flag{fe7c3416a2ace0d97e4029e77368c5ab}
參考資料
- 實驗吧CTF題庫-WEB題(部分)
- 「百度杯」CTF比賽 九月場 Upload解題思路_網路肝神的部落格-CSDN部落格
- CTF中常見的敏感文件列表 – 簡書 (jianshu.com)
- Virginia(維吉尼亞)無密鑰解密_Aslani的部落格-CSDN部落格
- CTF-Misc(base64÷4、神奇的Modbus)_m0_46335150的部落格-CSDN部落格
- XCTF-攻防世界-密碼學crypto-高手進階區-writeup_Ryannn_的部落格-CSDN部落格
- CTF 維吉利亞密碼shanghai (copyfuture.com)
- Better2021 CTF Writeup(2): 簡單的數學題 – 知乎 (zhihu.com)
在線工具
- 維吉尼亞密碼在線加密解密 – 千千秀字 (qqxiuzi.cn)
- CTF在線工具-在線維吉尼亞密碼加密|在線維吉尼亞解密|維吉尼亞密碼演算法|Vigenere Cipher (hiencode.com)
歡迎交流
程式設計實驗室專註於互聯網熱門新技術探索與團隊敏捷開發實踐,在公眾號「程式設計實驗室」後台回復 linux、flutter、c#、netcore、android、kotlin、java、python 等可獲取相關技術文章和資料,同時有任何問題都可以在公眾號後台留言~
- 部落格園://www.cnblogs.com/deali/
- 打程式碼直播間://live.bilibili.com/11883038
- 知乎://www.zhihu.com/people/dealiaxy