前言
最近好久沒更新博客和公眾號了,有朋友問是不是在憋大招,但我不好意思說其實是因為最近一段時間太懶了,一直在當咸魚…
意識到很久沒更新這個問題,我是想寫點什么的,但好像一直當咸魚也沒啥可分享的,最近剛參加了一個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
題目名稱就叫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 等可獲取相關技術文章和資料,同時有任何問題都可以在公眾號后台留言~