
CTF(C apture T he F lag,夺旗赛)CTF 的前身是传统黑客之间的网络技术比拼游戏,起源于 1996 年第四届 DEFCON,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。
CTF是一种流行的信息安全竞赛形式,其英文名可直译为“夺得Flag”,也可意译为“夺旗赛”。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为“Flag”。flag所表示的为目标服务器上存储的一些敏感机密的信息, 这些信息正常情况下是不能对外暴露的。选手利用目标的一些漏洞,获取到flag,其表示的即为在真实的黑客攻击中窃取到的机密信息。一般情况下flag拥有固定格式为flag{xxxxx},有些比赛会把flag关键词替换,例如我们CTFHub平台的flag为ctfhub{xxxxx},利用固定格式来反推flag也是一种常见的解题思路
Web题目 HTTP协议 请求方式HTTP 请求方法, HTTP/1.1协议中共定义了八种方法(也叫动作)来以不同方式操作指定的资源
GET
GET 方法用于使用给定的 URI 从给定的服务器检索信息。使用 GET 的请求应该只检索数据,并且对数据没有其他影响。
HEAD
与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
POST
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
PUT
向指定资源位置上传其最新内容。
DELETE
请求服务器删除Request-URI所标识的资源。
TRACE
回显服务器收到的请求,主要用于测试或诊断。
OPTIONS
这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)
参考资料:HTTP - Methods
题解这里给了提示让我们使用CTF**B的方法就会得到flag所以直接想到burpsuite抓包>修改HTTP的请求方法
302跳转打开浏览器代理设置为burp的proxy>刷新页面>将抓取的包发送给转发器repeater>修改请求method>查看服务器的响应内容
HTTP临时重定向
301---永久重定向,请求的页面已经永久移动到新的URL
302---临时重定向,请求的页面临时的移动到了新的URL
参考资料:HTTP - Status Codes
题解点击发现直接跳转至初始界面怀疑可能被重定向了,抓包验证一下
Cookieburpsuite抓包查看>repeater先send给服务器>看服务器响应的状态码>直接转发>查看服务器响应内容
还可以通过curl方法直接将URL定位到index.php页面就可以看到flag
Cookie欺骗、认证、伪造
Cookies欺骗是通过盗取、修改、伪造Cookies的内容来欺骗Web系统,并得到相应权限或者进行相应权限操作的一种攻击方式
进行cookie欺骗可以有多种途径:
1、跳过浏览器,直接对通讯数据改写
2、修改浏览器,让浏览器从本地可以读写任意域名cookie
3、使用签名脚本,让浏览器从本地可以读写任意域名cookie(有安全问题)
4、欺骗浏览器,让浏览器获得假的域名
参考资料:cookie欺骗_百度百科
题解同样还是先抓包看看请求的内容有什么,这里提示了cookie欺骗
基础认证提示了只有admin才能拿到flag,而这里的admin为0,也就表示不是admin,所以改为admin=1,伪造我就是admin来拿取flag (这里为什么不是2,3,4其他数原因是因为在这道题的逻辑下,登录与否是通过cookie的键值对,login是否为1判断的。所以从0改到1,后台就认为你登陆了。这与后台的PHP代码有关)
参考资料:CTF 比赛中,修改cookie login=0为=1是什么原理? - 知乎
在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式
举个例子当你在浏览器设置中查看你保留的用户及密码时它就会弹窗让你输入你的本机用户密码才能查看,这相当于是一次基本认证的过程
参考资料:秒懂HTTP基本认证(Basic Authentication) - 知乎
题解F12查看页面,发现请求的是flag.html,flag当然就在其中,然后给我们了一个压缩文件(密码表),所以想到尝试burp抓包然后爆破admin后的密码(这里为什么是admin因为一般默认系统管理员账户都是admin)
基础认证界面输入用户admin及密码(随意)>burp抓包>发送到入侵模块intruder>添加爆破点>修改编码base64>取消过滤>开始爆破
这里的编码是base64
下载复制密码到payload options选项
响应包源代码
HTTP响应包源代码查看
题解响应包源码查看可以通过请求后浏览器端返回的服务器响应包源码进行查看,方法打开开发者工具(F12)>源代码>查看源码
总结通过开发者工具查看服务器响应包的源码来找到flag,题目中提示了HTTP源码查看
本次靶场练习主要考核了关于web中HTTP协议的一些基本内容
(1)考查了对HTTP协议中8请求method的了解,做题不仅仅是只想通过不去深入了解知识点,你不仅仅需要掌握基本的GET和POST传参方法还需要对其他6种方法也有了解
(2)考察了我们对重定向状态码的了解,通过301、302可以实现网页重定向区别就是一个是永久重定向一个是暂时重定向,通关方法总结就是使用一个中间转发者来定位目标url,这里我用到curl方法和burp的转发器模块,curl使用方法具体参考:curl - How To Use
(3)考察了我们对于cookie欺骗、伪造、认证的了解,这里我们通过抓包来修改cookie进而伪造cookie的用户身份来欺骗服务器进行了绕过从而夺旗
(4)考察了我们对于HTTP基础认证的了解,HTTP的认证方法有两种:基础认证和摘要认证,其中基础认证就是由于用户在请求到一些敏感文件/数据时服务端需要验证身份的方式,通常会要求你输入用户及密码;而摘要认证是使用随机数来阻止进行密码分析的MD5加密哈希函数应用,相较于基础认证的明文传输摘要认证更加安全
(5)这里个人感觉就是考察了一个查看响应包源码的技巧,方法就是通过“开发者工具(F12)”中“源代码”模块来查看响应源码