前言
HTTP协议,其作用将超文本数据从网络传输到本地浏览器,能够保证高效而准确的传输超文本文档
CTF中也存在一类题来考察HTTP协议,这里是对这类题目的基本解法
一、HTTP请求过程
在浏览器地址栏中输入一个URL,即可查看对应的页面内容。这个过程是由浏览器先向服务器发送一个请求,网站接受到请求后进行处理和解析,然后返回对应的响应。浏览器再对响应包进行解析,来呈现一个网页
1.请求
由客户端发向服务器,由四部分内容构成,请求方法,请求网址(URL),请求头,请求体。
请求方法
请求方法,用于标识客户端请求服务端的方式,常见的有:GET和POST
GET:请求的参数包含在URL中可以看见
POST:请求的参数包含在请求体中,比GET请求更加安全
请求头
CTF中HTTP协议题目,主要在于对于请求头的修改与增加,来一步步顺从出题者的意愿来拿取flag
这里介绍几个常用的请求头:
Host: 用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置
Referfer: 用于标识请求从哪个页面而来
User-Agent:简称UA头,可以使服务器识别客户端使用的操作系统及版本,浏览器及版本信息等
Content-Type:用来表示请求的信息类型。例如:text/html代表HTML格式,image/gif代表GIF图片,application/json代表JSON信息
Cookie:cookie作用就是一个个人身份证,在登录成功后,浏览器会记录这个cookie,因此后面再访问时就不需要再次登录
伪造请求头实现本地访问的几种方法:
X-Forwarded-For: 127.0.0.1
Client-Ip: 127.0.0.1
host: 127.0.0.1
Referer: 127.0.0.1
二、CTF题目
这里使用这道题来简单讲解一下HTTP协议题目的解法
[SWPUCTF 2023 秋季新生赛]NSS_HTTP_CHEKER
这里就考察两个请求方法与三个请求头
首先是GET方法传入一个参数,我们可以直接在URL中使用**?this_is_get=get_%1t来输入这个参数
然后POST方法,可以使用bp抓包后,在请求体中加入 this_is_post=p03t 来传入这个参数,我这里使用hackbar这个插件来进行传参
然后是cookie头的伪造,在hackbar中增加一个header,后加入Cookie: this_is_cookie=cookie_suki_desu~**就可以完成出题人第三个要求
UA头就是用来表示浏览器版本信息的,所以只要将UA头改为NSSCTF
最后的本地访问就只需要使用XFF就可以拿到这个flag
总结
最后这里是我对于CTF中关于HTTP题目的一次总结,来写的这样的一个笔记,希望会对大家有所帮助