CTF靶场训练-Capture the flag

Background

CTF(Capture The Flag)是一种流行的信息安全竞赛形式,其英文名可直译为“夺得Flag”,也可意译为“夺旗赛”。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为“Flag”。

实验环境

攻击机 kali: 192.168.0.106
靶场机器 linux: 192.168.0.108

目的:获取靶机flag

信息探测

  • 扫描主机开放的端口号

    1
    nmap -p- -T4 靶场IP地址
  • 快速扫描主机全部信息

    1
    nmap -T4 -A -v 靶场IP地址

扫描常用服务
image
开放了ftp、ssh、http服务
扫描开放的端口
image

靶机开放端口【21(ftp)、22(ssh)、80(http)、9090(ze)、13337、22222、60000】

【注:EasyEngine是一个来自国外的建站环境一键安装脚本,支持一键部署NGINX、MySQL、Postfix、PHP 7建站环境和安装WordPress博客程序,而且还能智能化选择WordPress的缓存模式、自动部署Let’s Encrypt的SSL证书等等。】

端口分析

  • 对于大端口非http服务,可以用nc来探测该端口的banner信息

    1
    nc IP地址 端口号
  • 对于大端口http服务,可以使用浏览器浏览界面、查看源代码,寻找flag值

    1
    http://ip地址:端口号

根据扫描结果,发现两个大端口的未知的服务(13337、60000)
可以用nc探测端口的banner信息
探测13337端口
image

直接返回一个flag,这是就发现了第一个flag
FLAG:{TheyFoundMyBackDoorMorty}-10Points

探测60000端口
image
直接返回一个shell,在目录下发现flag文件
第二个flag
FLAG{Flip the pickle Morty!} - 10 Points

【banner信息:表示欢迎语,有时会含有敏感信息,比如系统版本信息等;banner 信息获取的基础是在和目标建立链接后的,只有建立的链接,才可以获取到相应的 banner 信息】

探测敏感信息

1
2
nikto -host http://靶场IP:端口
dirb http://靶场IP:端口

80、9090端口是http服务,可通过先网页直接访问
80端口网页和源代码没有发现可用信息
image
9090端口网页发现第三个flag
FLAG {There is no Zeus, in your face!} - 10 Points

因为靶机还开放了21端口ftp服务
尝试网页浏览,看看是否能匿名登陆

1
ftp://靶场IP

image
发现一个flag文件
image
第四个flag
FLAG{Whoa this is unexpected} - 10 Points

网页方式访问完,接下来对隐藏文件进行探测
image
【password目录、robots文件等】

发现一个passwords目录,打开目录
image
打开flag文件
image
第五个flag
FLAG{Yeah d- just don’t do it.} - 10 Points

打开passwords.html
image
发现一段英文,意思大概是密码在这个文件中,它被隐藏了
查看源码
image
发现一个密码:winter(后面可能会用到)

查看robots文件,访问文件中显示的文件
发现一个用于IP tracer的cgi文件
image
可能含有命令执行漏洞
image

果然不错,不过获得权限不大;
因为之前得到了一个密码,所以可以查看有没有其他账号(/etc/passwd)
这里用cat 命令好像被屏蔽了,可用用more 命令代替
image
【三个账号名称:RickSanchez、Morty、Summer】
从密码winter来看用户名应该就是Summer

登陆靶机

登陆靶机一般用ssh进行登陆
image
靶机不允许远程登陆
想到之前扫描开放的端口22222
尝试指定端口登陆
image
登陆成功
查看flag(使用cat命令就会显示一只猫)
image
第六个flag
FLAG{Get off the high road Summer!} - 10 Points

总结

  1. 注意未知服务的端口,可以使用nc获取对应的banner信息;
  2. 使用对应相近的shell命令来绕过限制; 如 cat more
  3. 对每一个服务都需要进行对应的探测,不放过任何一个可以利用的点;