ructfe体验

这两天参加了RuCTFe比赛,是由俄罗斯Hackerdom组织面向全球参赛队伍的在线攻防赛。第一次接触攻防模式(Attack-Defense)的,抱着学习心态来体验下。之前只参加国内的ctf,初赛都是解题模式,实力不济,没进过决赛,对攻防模式确实陌生。虽然最后没有得分,但也是一次很好的经历体验,面对那么多的web框架,就知道自己的不足; 见识到新东西,开阔视野。

比赛前两天,队友收到orgs的邮件,让我们去配置测试网络。官网上的manual写得不错,虽然是英语,但慢慢读完理解后还是挺清晰的。安装了virtualbox后,下载官网提供的两个image包:router和test。两个image都是ubuntu 14.10系统的,但没有安装桌面程序,单纯的tty终端。纯命令行操作,没有难倒我,按照说明配置虚拟机网络。很快问题就来了:最后router要配置vpn以便连接上裁判机。队伍的vpn配置文件是邮件里有,现在只需要把它传入到虚拟机router里即可。百度了下发现有vbox有共享文件夹功能,要先安装增强插件,最后发现死活安装不上,所以共享文件的想法行不通。突然发现router里开通了ssh服务,并且提供了帐号。router和实体机之间是用NAT连接的,设置下端口转发规则,就可以在实体机中访问router,之后用scp指令上传文件。这样配置后成功点亮了队伍的network status, 等待比赛的到来…

比赛前十六个小时,orgs放出了比赛所用Vuln Image压缩包供下载。这里我们弄错了时间(UTC转为北京时间弄错了),大半夜还起来,一直找不到解压密码,结果在IRC问了才知道弄错时间。囧!!!

比赛开始,解压Vuln Image,导入vbox,启动,提示要登录。晕,密码是什么???看下IRC,发现也有很多人在问,orgs答复 It’s a first challenge 。队友很给力,一会就找到相关的帖子,照着做重置root密码。登录进去后,发现/home下有几个文件夹,也就是这次比赛的几个服务(mol, tax, electro, nasarasa, hm, mig, bank)。文件夹里是服务的源代码,才明白原来就是源码审计。我们要找出源码中的漏洞,一方面修复自己的服务,另一个方面写出exploit去偷去别的队伍的flag。vuln image也只是tty终端,在里面看源码确实痛苦,经过一番思考,把router当做中转点,用scp上传和下载,把所有源码弄了出来。之后我看了源码,真是多种多样。每个服务都由不同编程语言编写的(有python, node.js, .net, go, c等), 也使用不同的web框架和数据库。太多知识不会,也没发现怎么访问服务调试,到比赛结束还是没找到漏洞。

后记,发现我们没理解好manual,也是对比赛的不熟悉。

You should use following network settings for your team’s PCs during the game (or virtual machines setup):
IP = 10.A.B.128 - 10.A.B.255
Netmask = 255.255.255.0
Gateway = 10.A.B.1
DNS = 8.8.8.8

实际上我们需要把自己机子(或者新的虚拟机)的ip设置和Vuln Image同一个局域网,以便用来访问Vuln Image的服务,才可以测试和攻击。

收获总结

  • 远程控制: ssh -p 2222 root@127.0.0.1
  • 上传文件: scp -P 2222 filename root@127.0.0.1:/root (注意是大写P)
  • 下载文件: scp -P 2222 -r root@127.0.0.1:/root dirname (-r是操作文件夹)
  • 重置root密码: http://blog.dosec.org/archives/2268.html
  • 测试时间: time nc -nv 10.10.10.5 31337
  • 查看开放端口: netstat -tulnp