中科大 Hackergame 2018 我是谁 Writeup
2018-10-17
中科大 Hackergame 2018 我是谁 Writeup
有段时间没刷题了,这周周六就是校赛了,在队友 kOX 的怂恿下一起参加了中国科学技术大学的 Hackergame 2018 CTF 比赛,遇到了一道不错的题目用到 超文本咖啡壶控制协议的茶壶扩展
的相关知识,与队友一起在学院实验室摸索了本天,决定写写自己的解题思路。
这道大题分为两道小题,第一题为“哲学思考”
哲学思考 题目描述
Who am I?
「我是谁?」
「我从哪里来?」
「将到哪里去?」
据说有这样三个有趣的哲学问题。
现在,请帮我回答第一个问题吧。
Can you tell me who I am?
哲学思考 题解
打开 Chrome 浏览器,按下 F12 打开开发人员工具,切换到 Network 选项页,点击 ip 地址,即可看到:Status Code: 418 I'M A TEAPOT
,提交 TEAPOT
之后成功获得 flag{i_canN0t_BReW_c0ffEE!}
,点击链接进入第二小题继续作战。
如图:
至于 418 I'M A TEAPOT
的意思,其实很有趣,便是超文本咖啡壶控制协议的茶壶扩展
在普通浏览器下打开的一中报错信息,具体请接着往下看。
Can I help me ? 题目描述
Brewing tea is not so easy.
Try using other methods to request this page.
Can I help me ? 题解
看到题目描述中说采用不同的方法来请求,于是我打开了 POSTMAN 尝试使用 POST 请求,得到了如下提示:
The method "POST" is deprecated.
See RFC-7168 for more information.
好戏开场了,通过一番搜索打开 RFC-7168
的文档,看到其中有一行说到发起茶壶请求时必须在 Content-Type
加入 message/teapot
,并且还可以在头部加入 addition-type
来指定要加入的东西以及通过 sugar-type
来指定糖类。除此之外,还抛弃了 POST
方式发起请求,而改用 BREW
,真是有意思,于是采用 cURL 发起测试,具体如下:
curl -X BREW -d "name=TEAPOT" -H "Content-Type:message/teapot" -H "addition-type:milk-type" -H "sugar-type:Sugar" -v http://202.38.95.46:12005/the_super_great_hidden_url_for_brewing_tea
得到的返回值如下:
< HTTP/1.0 300 MULTIPLE CHOICES
< Content-Type: text/html; charset=utf-8
< Content-Length: 19
< Alternates: {"/the_super_great_hidden_url_for_brewing_tea/black_tea" {type message/teapot}}
< Server: Werkzeug/0.14.1 Python/3.6.6
< Date: Thu, 11 Oct 2018 12:53:13 GMT
<
这次直接告诉我 300 MULTIPLE CHOICES
有多种口味可以选择了(大雾),并且提示了最终目标为:/the_super_great_hidden_url_for_brewing_tea/black_tea,于是修改请求目标,具体如下:
curl -X BREW -H "Content-Type:message/teapot" -v http://202.38.95.46:12005/the_super_great_hidden_url_for_brewing_tea/black_tea
最后成功的喝上了茶。
Here is your tea: flag{delivering_tea_to_DaLa0}