首先是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