Fork me on GitHub

CTFHub题解-技能树-Web-Web前置技能-HTTP协议【请求方式、302跳转、cookie、基础认证、响应包源代码】

CTFHub题解-技能树-Web(Web前置技能-HTTP协议)

 
 
 
平台访问链接:https://www.ctfhub.com/#/skilltree 
 
其他模块平台还没有开放,所以 我们就先来试试http协议模块的测验~
 
 

(一)请求方式

 
  1.知识补充
 
  (1)http 1.1
 
    http协议请求由三部分组成,分别是:请求行、消息报头、请求正文。
 
 
 
 
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。
【Method】 【Request-URI】 【HTTP-Version】 【CRLF】
 
 
 
 
 
下面是一个实际的HTTP响应报文:
 

 

HTTP的响应状态码由5段组成:
  • 1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急...
  • 2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
  • 3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。
  • 4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。
  • 5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。
 
  (2)curl用法
 
  curl是一个和服务器交互信息(发送和获取信息)的命令行工具。
 
    查看http响应头:curl -i http://www.xxx.com
    查看交互过程: curl -v http://www.xxx.com
    GET请求: curl -X GET http://www.xxx.com (当发起http请求时,curl会默认发起GET请求,也可以"-X GET"方式指定。)
    POST请求: curl -X POST http://www.xxx.com -d “参数”(当使用POST请求方式,需要通过指定“-d”,向服务器传递数据。)
    调试:curl -v https://www.xxx.com     (-v参数输出通信的整个过程,用于调试。)
 
 
 
 
  2.题解
 
 
 
打开之后是这个样子的~
 
大概意思就是,需要你用CTFHUB 方法请求 index.php来获取flag~
注意:HTTP Method 是可以自定义的,并且区分大小写.
 
 
 
 
命令:curl -v -X CTFHUB http://challenge-74da4bfe747dae2a.sandbox.ctfhub.com:10080/index.php
 
 
 
 
 
 
(二)302跳转
 
 
 
 
 
1.知识补充
 
HTTP状态码
 
 
详情请看查看菜鸟教程的状态码资料。
https://www.runoob.com/http/http-status-codes.html
 
这里笔者贴出了和这次题目相关的302状态码解释。
 
 
 
 
 
2.题解
 
打开是这样的。
 
 
 
F12->network
 
 
用burpsuite抓包看一下,不会设置burpsuite的小伙伴们可以去看一下笔者的这篇博客:
 
  Burpsuite常用模块之proxy、spider 、decoder(https://www.cnblogs.com/0yst3r-2046/p/10998657.html
 
在repeater模块,Go一下,看到response回显。
 
 
ok啦~
 
 
 
(三) Cookie
 
Cookie欺骗、认证、伪造
 
 
 
 
1.知识补充
 
cookie是什么呢?
cookie是由后端服务器端创建保存在客服端一种数据库结构。浏览器请求和后端服务端响应都会携带创建的cookie来回传输。cookie在传输时存储在请求头和响应头中。
 
cookie的作用: 保存用户与后端服务器的交互状态。
 
 
 
2.题解
 
 
 
用burpsuite抓包看一下~
我们看到Cookie:admin=0
这就表示我们不是管理员,那么我们把0改为1
 
 
 
修改后的,发送至repeater模块
 
 
Go一下,就看到flag啦~
 
 
 
 
(四) 基础认证
 
 
 
 
 
1.知识补充
 
 
(1)HTTP基本认证
 
    桌面应用程序也通过HTTP协议跟Web服务器交互, 桌面应用程序一般不会使用cookie, 而是把 "用户名+冒号+密码"用BASE64算法加密后的字符串放在http request 中的header Authorization中发送给服务端, 这种方式叫HTTP基本认证(Basic Authentication)
 
 
(2)HTTP基本认证的过程
 
    第一步:  客户端发送http request 给服务器,
  第二步:  因为request中没有包含Authorization header,  服务器会返回一个401 Unauthozied给客户端,并且在Response的 header "WWW-Authenticate" 中添加信息。
    第三步:客户端把用户名和密码用BASE64加密后,放在Authorization header中发送给服务器, 认证成功。
    第四步:服务器将Authorization header中的用户名密码取出,进行验证, 如果验证通过,将根据请求,发送资源给客户端
 
 
 
 
2.题解
 
 
 
 
 
又要用到burpsuite啦~
抓包抓包
 
 
 
 
 
 
 
 
这个top100是题目里面的题目附件~
大家不要自己去找字典哦~
 
 
 
 
 
 
 
 
 
 
 
(五)响应包源代码
 
 
1.知识补充
 
查看源码
 
 
2.题解
 
F12->elements
 
 
 
或者,可以右键,查看源码~
 
 
 
 
 
 
 
 
 
 
 
这样,前置技能的HTTP协议就全部解锁啦~
开心。
 
 
 
 
 
 
 
参考资料:
 
https://www.cnblogs.com/xiaocao123/p/10392145.html
https://tool.oschina.net/commons?type=5
https://www.runoob.com/http/http-status-codes.html
 
 
 
 
 
posted @ 2020-03-02 17:58  0yst3r  阅读(5663)  评论(1编辑  收藏  举报
返回顶部