記一次CTF比賽過程與解題思路-MISC部分


前言

最近好久沒更新博客和公眾號了,有朋友問是不是在憋大招,但我不好意思說其實是因為最近一段時間太懶了,一直在當咸魚…

意識到很久沒更新這個問題,我是想寫點什么的,但好像一直當咸魚也沒啥可分享的,最近剛參加了一個CTF比賽,來分享一些作為CTF小白的解題過程和思路~

由於篇幅太長,所以本文第一篇就先只發MISC部分,相比較於固定類型的幾種題目,MISC是最好玩的,比較考驗知識廣度和想象力(而且有簽到題)

推薦滲透測試工具

比賽回顧

大概看下這次比賽有哪些題

MISC

PDF

下載下來是個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

題目名稱就叫Ext Alpha,結果文件編碼就是這個,這是真的沒想到,我的經驗還是太少啊~

而且這個編碼格式是真的小眾的那種,我都搜不到…

只能說,學到了,666

dddns

又是沒有啥提示的一道題,先下載附件吧

下載下來是個壓縮包,里面有個wireshark的流量包

打開里面都是DNS流量包

分析一下DNS流量特征

從中得到兩個信息:

  • 根域名為:b.dns.xibai
  • 關鍵字特征 type NULL:可知該流量包中的流量就是基於iodine這一工具建立的DNS隧道的流 量

參考:DNS_Tunnel 分析

官方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*2snowsnow密碼都不對,不過題目哪有這么簡單的,既然這個是key2,那應該還有個key1。

聯想到剛才打開壓縮包的時候提示損壞,那這個壓縮包應該還暗藏什么玄機,用010 editor打開看看~ 果然藏了點私貨在里面

這里key1就拿到了:key1{666c61672a33},繼續16進制解碼一下

試着用flag*3flagflagflag這個密碼解壓flag,成功了,不過這文件……有點奇怪

看似空白文件,其實是有東西的

結合前面key2有個snow*2,聯想到是snow隱寫,密碼應該是snowsnow~

參考:

用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}

參考資料

在線工具

歡迎交流

程序設計實驗室專注於互聯網熱門新技術探索與團隊敏捷開發實踐,在公眾號「程序設計實驗室」后台回復 linux、flutter、c#、netcore、android、kotlin、java、python 等可獲取相關技術文章和資料,同時有任何問題都可以在公眾號后台留言~

程序設計實驗室.jpg


免責聲明!

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



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