CTFHUB-WEB-WEB前置技能-HTTP协议-请求方式
文章目录
前言
2023/9/1 正式开始入门ctf-web方向~要一直坚持下去哦!!!
一、解题过程
·题目如下:
·开启题目,打开题目给出的链接
·打开DOS窗口,使用curl命令查看服务器的返回信息,就可以找到flag了
curl -v -X CTFHUB 相关url
二、过程解读
1.HTTP请求方法
上网查阅后发现现在是九种。
·HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
·HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
方法 | 描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体。 |
HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
DELETE | 请求服务器删除指定的页面。 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
OPTIONS | 允许客户端查看服务器的性能。 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
虽然 HTTP 的请求方式有 9 种,但是我们在实际应用中常用的也就是 get 和 post,其他请求方式也都可以通过这两种方式间接的来实现。
2.消息结构
客户端请求消息:
服务器响应消息:
更多有关http的教程可以看 HTTP 教程|菜鸟教程
3.关于curl命令
由于什么也不会,所以直接在网上找了教程跟着教程走的,然后查了一下为什么是curl -v -X。
1、curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。
2、不带有任何参数时,curl 就是发出 GET 请求。
GET 的作用是请求指定的页面信息,并返回实体主体,刚好不是很明白,于是我用刚刚那个网址试了一下:
curl http://challenge-741852c18cc2a80e.sandbox.ctfhub.com:10800/index.php
这个返回的好熟悉啊,很像我之前学了一点之后罢工的h5,于是我试着在vscode运行了这段代码:
alt+B之后果然!
↑是段落的标签,里面给出了刚刚打开链接后网页的内容,看来直接curl就是给出了页面的源代码
既然是发出GET请求,那我能不能直接在命令行使用GET?
看来是不太行的,但为什么呢?我又查询了GET的用法,才发现是我疏忽了HTTP的消息结构,也就是这个:
可见GET方法是请求行的第一个要素而已,要严格遵守消息结构才能使用。
3、-v与-X是什么
·-v
参数输出通信的整个过程,用于调试。
·-X
参数指定 HTTP 请求的方法。
所以curl -X CTFHUB
可以直接找出flag,而curl -v
是为了输出通信的整个过程
需要注意的是,这些参数都严格区分大小写,比如-x
和-X
就代表不同的含义,更多的关于curl的用法可以看 curl的用法指南
总结
撒花!第一道web的题,花了一两个小时,自我感觉是已经把这道题吃透了,希望bbbbb再接再厉,持之以恒的做下去~~~