CTFHub Web前置技能 http协议

CTFHub Web前置技能 http协议

1.请求方式

前置的知识要求是理解http协议中的八种基础请求方式,其中着重看一下GET和POST;

(1)、OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
(2)、HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
(3)、GET
向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url
(4)、POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
(5)、PUT
向指定资源位置上传其最新内容
(6)、DELETE
请求服务器删除Request-URL所标识的资源
(7)、TRACE
回显服务器收到的请求,主要用于测试或诊断
(8)、CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

打开环境,题目中写道:
HTTP Method is GET,Use CTFHUB Method, I will give you flag.
这个地方的请求方法使用的时GET,要求我们改成CTFHUB(什么鬼方法)。这里提供两种思路:
(1)使用Burpsuite。Burpsuite抓包,查看发送GET请求的网址,之后发送到Repeater中,将GET请求改为题目中要求的CTFHub请求。然后得到flag。
(2)使用win系统自带的curl,键入:
curl -v -X CTFHUB http://challenge-aeb449c1b6178ad4.sandbox.ctfhub.com:10800
此方法也可以修改请求。
[拓展]:详细了解curl的用法(其实功能蛮强大的)。

2.302跳转

前置的知识要求是了解302重定向,302重定向又称之为暂时性转移(Temporarily Moved ),英文名称:302 redirect。 也被认为是暂时重定向(temporary redirect),一条对网站浏览器的指令来显示浏览器被要求显示的不同的URL,当一个网页经历过短期的URL的变化时使用。一个暂时重定向是一种服务器端的重定向,能够被搜索引擎蜘蛛正确地处理。
302重定向是暂时的重定向,搜索引擎会抓取新的内容而保存旧的网址。由于效劳器前往302代码,搜索引擎以为新的网址只是暂时的。

打开环境,点击get flag,很显然没拿到(废话)并且跳转到了原页面。F12查看网络,发现出现302跳转。那么需要做的就是劫持302跳转。这里依旧提供两种方法:
(1)使用burpsuite直接抓包,发现302跳转,将跳转页发送到repeater之后发送请求,即可得到flag。
(2)curl在不加 “-L”的情况下不会进行302跳转。复制“get flag”的链接,键入:curl <link>从页面直接得到flag。
[拓展]:了解常见的状态码:

101 websocket协议
websocket长连接协议,通常用来即时通讯。如视频会议、直播、弹幕等
200 请求被成功处理
成功请求
301 永久性重定向
比如建设一个网站后,将网站的url变换了,重新申请一个域名,但是希望之前的用户访问之前url仍然可以访问到,就可以做一个重定向新的url下面。比如京东最早域名www.360buy.com名重定向到现在www.jd.com
302 临时性重定向
比如用户在未登录时访问个人中心页面,这时可以临时重定向到登录的url。
304 Not Modified
当客户端拥有可能过期的缓存时,会携带缓存的标识 etag、时间等信息询问服务器缓存是否仍可复用,而304是告诉客户端可以 复用缓存。
400 请求出错
由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。
401 未授权
(未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 没有访问权限
系统中某些页面只有在某些权限下才能访问,当用户去访问了一个本身没有访问权限的url,回报403错误。
404 没有对应资源
一般是自己输入了一个url,这个url并不合法。
404 找不到,Web 服务器找不到您所请求的文件或脚本。
请检查URL 以确保路径正确。
405 不允许此方法
405 不允许此方法,对于请求所标识的资源,不允许使用请求行中所指定的方法。(get/post/put/delete/请求用混淆了,更正即可)
请确保为所请求的资源设置了正确的 MIME 类型
406 不可接受
根据此请求中所发送的“接受”标题,
此请求所标识的资源只能生成内容特征为“不可接受”的响应实体
407 需要代理身份验证
407 需要代理身份验证,在可为此请求提供服务之前,
您必须验证此代理服务器。请登录到代理服务器,然后重试
412 前提条件失败
在服务器上测试前提条件时,部分请求标题字段中所给定的前提条件估计为FALSE。
客户机将前提条件放置在当前资源 metainformation(标题字段数据)中,以防止所请求的方法被误用到其他资源
414 Request-URI 太长
414 Request-URI 太长,Request-URL太长,服务器拒绝服务此请求。仅在下列条件下才有可能发生此条件:
    客户机错误地将 POST 请求转换为具有较长的查询信息的 GET 请求
    客户机遇到了重定向问题(例如,指向自身的后缀的重定向前缀)
    服务器正遭受试图利用某些服务器(将固定长度的缓冲区用于读取或执行 Request-URI)中的安全性漏洞的客户干扰
500 服务器错误
比如服务器某一个函数代码出错了,有没有捕获异常,这时候会报500错误。
500 服务器的内部错误,Web 服务器不能执行此请求。请稍后重试此请求。
501 未实现
501 未实现,Web 服务器不支持实现此请求所需的功能。请检查URL 中的错误
502 网关出错
Bad Gateway
网关出错,当用作网关或代理时,服务器将从试图实现此请求时所访问的upstream 服务器中接收无效的响应
503 服务器停机或正在维护
系统正在维护或者服务器暂停的时候,回报500错误。
504 Gateway Timeout
代理服务器无法及时的从上游获得响应

3.cookie

前置知识就是了解cookie是什么,cookie的作用等。
解题思路也是两种:
(1)使用burpsuite进行抓包,然后发现cookie那一栏写着admin = 1。发送到repeater后将admin改为0,发送,得到flag。
(2)使用curl。首先是需要知道cookie是admin=1的。这个时候,我们可以使用curl命令的--cookie参数,传入admin = 1;
curl challenge-f83536cf678926e2.sandbox.ctfhub.com:10080/ --cookie "admin=1;"
之后即可得到flag。

[拓展]:这个时候可以理解cookie、session和token以及他们之间的区别了。

Session 是一种HTTP存储机制,目的是为无状态的HTTP提供的持久机制。所谓Session 认证只是简单的把User 信息存储到Session 里,因为SID 的不可预测性,暂且认为是安全的。这是一种认证手段。
token是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件;cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某个网站,就会自动调用cookie自动登录用户名.
cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。IETF RFC 2965 HTTP State Management Mechanism 是通用cookie规范。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies .

可以详细的找一些文章再看一看。

4.基础认证

前置知识:就是在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式。详情请查看 [http基本认证]:https://zh.wikipedia.org/wiki/HTTP基本认证

掌握基础知识之后可以看一下怎么解题了。文件贴心的附了一个密码的字典10_million_password_list_top_100.txt文件。那么这应该是一道密码爆破题目了。根据抓包可知,本网页提交会将用户名密码经过base64加密后提交,且格式为:admin:password。打开burpsuite中的intruder,再payload option中导入字典;payload processing中增加爆破规则:

Add Prefix:admin;
Base64-encode

一键爆破,查找爆破结果找到非402,进行base64解码,得到的结果交上即可。

[拓展]:大概是掌握一下Burpsuite的intruder功能吧。估计写脚本也是可以的,但是咱不会(

5.http响应包源码

这个不管从那个方面看都没啥可写的……直接查看源代码发现注释里有flag……

posted @ 2021-06-15 22:28  Grayi  阅读(205)  评论(0)    收藏  举报