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协议中预留给能够将连接改为管道方式的代理服务器。
注意:
1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。
2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。
参考链接:https://www.cnblogs.com/weibanggang/p/9454581.html
打开环境,题目中写道:
?HTTP Method is GET,Use CTF**B Method, I will give you flag.
提示这个地方的请求方法使用的是GET,要求我们改成CTFHUB。这里有两种解题思路: (1)使用Burpsuite 打开Burpsuite进行抓包 设置代理 查看发送GET请求的网址,进行抓包
发送抓取到的包到Repeater中 将GET请求改为题目中要求的CTFHUB请求,再单击GO,得到flag ctfhub{99379f8cca7baf86bbc84c7e} 提交成功!
(2)使用win系统自带的curl 打开CMD,输入以下命令
?curl -v -X CTFHUB http://challenge-077c0ec220d36a47.sandbox.ctfhub.com:10800/index.php 得到flag ctfhub{99379f8cca7baf86bbc84c7e}
2.302跳转
在做这道题前,需要了解302重定向,302重定向又称之为暂时性转移(Temporarily Moved ),英文名称:302 redirect。 也被认为是暂时重定向(temporary redirect),当服务器无法处理浏览器发送过来的请求(request),服务器便告诉浏览器跳转到可以处理请求的url上。(浏览器会自动访问该URL地址,以至于用户无法分辨是否重定向了。) 打开环境,点击get flag,很显然没拿到并且跳转到了原页面,(但是因为浏览器自动访问了该URL地址,以至于我们凭肉眼无法分辨是否重定向了) F12查看网络,发现出现302跳转。那么需要做的就是劫持302跳转。这里依旧提供两种方法:
(1)使用burpsuite
打开Burpsuite进行抓包 设置代理 直接抓包 将包发送到repeater之后发送请求 点击GO,即可得到flag
ctfhub{afedbeeb7d9c2b335919f420}
(2)使用curl curl在不加 “-L”的情况下不会进行302跳转,复制“Give me flag”的链接 打开CMD 输入以下命令:curl http://challenge-6eaef75615c2d8d1.sandbox.ctfhub.com:10800/index.php 从页面直接得到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的作用等 参考链接:https://www.jianshu.com/p/6fc9cea6daa2 解题思路也是两种: (1)使用burpsuite
打开Burpsuite进行抓包 设置代理 按下F12查看网页源码,找到了cookie为:admin=0 进行抓包 将包发送到repeater后将admin改为1 点击发送,得到flag
ctfhub{ad878d07c82ba0ff909eff1f}
(2)使用curl
按下F12查看网页源码,找到了cookie为:admin=0 打开CMD 输入以下命令传入cookie “admin=1;”
curl http://challenge-c7361f0905c5f273.sandbox.ctfhub.com:10800/ --cookie "admin=1;"
即可得到flag
4.基础认证
基础认证认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式 文件贴心的附了一个密码的字典10_million_password_list_top_100.txt文件,但是我这里在第一次打开文件的时候显示数据错误,打不开文件,于是我先将文件后缀改为txt文本,之后打开关闭,再次更改文件后缀为zip,就可成功打开 如果还是无法打开的话,可以使用kali的formost命令对文件进行分离,即可拿到密码字典文件 那么这就可以肯定是一道密码爆破题目了,使用burpsuite进行破解 根据抓包可知,Basic表示基础认证,字符串格式xxxxxxxxx==大概率为Base64编码,本网页提交会将用户名密码经过base64加密后提交,且格式为:admin:password 进行重发后发现,提示我们admin,那大概率用户名就是admin了 打开burpsuite中的intruder,确认爆破位置 再payload option中导入字典;payload processing中增加爆破规则: 添加前缀,admin: 添加Base64编码 取消URL编码 开始爆破 一键爆破,查找爆破结果找到非401,将结果进行base64解码 进行在线base64解密 登录拿到flag
5.http响应包源码
这道题没什么好说的 ![在这里插入图片描述](https://img-blog.csdnimg.cn/99cc9caccf56440a8e820cbf4ab795ff.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbGl2ZXIxMDBkYXk=,size_20,color_FFFFFF,t_70,g_se,x_16 进行抓包 之后进行重发 点击发送,即可在源码区找到flag
最近一直在学习,但是学习的东西很多很杂,于是便把自己的学习成果记录下来,便利自己,帮助他人。希望本篇文章能对你有所帮助,有错误的地方,欢迎指出!!!喜欢的话,不要忘记点赞哦!!!
|