CTFHUB技能树HTTP协议

首先是ctf的各种基础知识啥的就简单了解了解,可以为以后的CTF比赛做一些了解。

首先学习一下题目里面提到的HTTP请求方法。

HTTP工作原理

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

 HTTP 请求/响应的步骤:

客户端连接到Web服务器->发送Http请求->服务器接受请求并返回HTTP响应->释放连接TCP连接->客户端浏览器解析HTML内容

1、客户端连接到Web服务器

一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,百度一下,你就知道

2、发送HTTP请求

通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

3、服务器接受请求并返回HTTP响应

Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

4、释放连接TCP连接

若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

5、客户端浏览器解析HTML内容

客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

HTTP请求消息Request

客户端发送一个HTTP请求到服务器的请求消息包括以下格式

请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。

HTTP请求消息Response

一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文

HTTP的知识看的差不多了就开始第一题

通过bp工具的抓包来查看http的resquest

request 就是请求,题目中写道HTTP Method is GET

我们知道请求中 GET /index.php HTTP/1.1就是请求行,HTTP Method也是GET

Use CTF**B Method, I will give you flag.

将HTTP Method改为CTFHUB

就可以得到flag,复制粘贴任务完成。

302跳转

HTTP临时重定向,继续学习

分类 分类描述
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误
301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

接着开始做题

使用BP工具抓包

send to repeater

点击发送直接得到flag

Cookie欺骗、认证、伪造

cookie欺骗,认证伪造

首先我们先了解什么是cookie

cookie机制是在浏览网页的时候,服务器将你的登录信息,浏览信息等发送给客户端并保存一定的时间。当你下一次访问这个网站的时候,就能读取上一次你的记录

cookie是一段小型的文本数据是由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。我们只要伪造了这个信息就可以绕过登录页面,直接登录。

了解的差不多了直接开始

题目说只有admin才可以拿到flag,通过bp抓包

 继续send to repeater

我们可以发现请求当中Cookie当中admin=0也就是admin为假

那么我们将它改为真

 得到flag.

基本认证

根据题目中的链接维基百科应该需要梯子,可以查看其他的csdn的文章

在浏览器当中会让你输入用户名和密码basic的内容就是用户名:密码然后用base64编码加密显示。

Upgrade-Insecure-Requests: 1
Authorization: Basic YWRtaW46

接下来进入题目当中

 题目当中还有一个txt文件

是一个密码表

首先我们随便输入用户名密码用BP抓包

 

 看到WWW-Authenticate: Basic realm="Do u know admin ?"

可以知道账户的用户名为admin

密码应该就在题目所提供的密码表当中了,应该将用户名和密码相组合

就像admin:123456

因为对BP的功能不太熟悉我还在密码表当中把"admin:"一个个加入到密码表当中再base64加密,但是BP中就自带了这种功能。

首先我们先发送到Intruder

 在basic处添加有效负载位置

 类型选择简单清单,把密码单的 密码粘贴进去
 

 增加前缀admin:

 有效负载处理选择编码,base64

接下来开始攻击

 长度和其他的不一样即为唯一正确的答案,再对它进行base64编码的解密

解密后密码如图,输入用户名和密码就拿到了flag

http响应包源代码查看

点开一看贪吃蛇根据题目直接查看源代码,都没用到bp

 

 直接拿到flag

猜你喜欢

转载自blog.csdn.net/winofkill/article/details/121453464