1、请求方式
由题目可知,考察的是HTTP请求方法,在Http/1.1协议中定义的八种方法为GET, POST 、HEAD、OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
进入题目后,发现提示,HTTP Method 是可以自定义的,并且区分大小写,直接用 CTFHUB 方法请求 index.php 即可拿到 flag。
方法1:
将原来的GET方法改为CTFHUB即可,发送。
方法2:
通过Burp抓包改请求方法。
将原来的GET方法改为CTFHUB即可,GO一下即可得到flag。
方法3:
GET改为CTFHUB,点击Forward。即可得到flag
方法4:
2.302跳转
302是Http协议的临时重定向状态码。进入页面后发现没有任何消息,按f12进入控制台,点击Give me Flag按钮,发现页面没有任何变化,但其实页面已经发生了跳转,用curl访问新的跳转页面即可得到flag值。
3.cookie
访问题目页面发现给的提示是“hello guest,only admin can get flag”,我们挂上 BurpSuite 之后重新访问题目页面,在cookie发现admin=0字段,猜测服务器可能是根据此字段来判断浏览者身份。
方法1:
方法2:
4.基本认证
在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供用户和密码的一种方式。详情请查看 https://zh.wikipedia.org/wiki/HTTP基本认证。
进入题目页面,发现点击click会出现认证页面,
挂上 BurpSuite 的代理,随便输个账号密码(比如: 账号admin 密码 admin)访问,查看 HTTP 响应报文:
得到提示 do u konw admin ?,于是猜测账号是 admin , 那么接下来就只需要爆破密码了。注意看到 HTTP 请求头部的 Authorization 字段,后面的YWFhOmjiYg==用base64 解码后是 admin:admin,也就是我们之前输入的账号:密码。
使用 BurpSuite 进行基础认证爆破
(1)将报文发送到 Intruder, 将 Basic后面 base64部分添加为payload position
(2)在 Payloads选项卡下,选择 Payload Type为SimpleList,然后在 Payload Options 中点击 load 加载密码字典
(3)Payload Processing -> Add-> Add Prefix(添加前缀)-> 输入 admin:
Payload Processing -> Add-> Encode(添加一个编码方式)-> 选择 Base64 Encode
(4)Payload Encode 取消勾选的 URL-encode, 不然你会看到base64之后的=会被转成 %3d ,你就算爆破到天荒地老也不会出来
(5)Start Attack ,然后按 Length 排序,并看到状态码出现200的,即爆破成功
查看 Response,得到flag
5.响应源代码
题目页面打开后是一个网页版的“贪吃蛇”小游戏
根据题目要求是查看响应包源代码,可以使用burpsuite,也可以使用浏览器自带的开发调试工具,按f12进入调试界面,查找flag中的关键字段cfthub,就可以得到结果。