web前置技能
HTTP协议
1.请求方式
题目解释:
HTTP的请求方式是GET
用CTFHUB的方法,将会获取flag
这道题的核心是改变HTTP请求头中的请求方式Method
解答:
通过bp对浏览器代理,进行抓包
send发送后即获得响应response得flag
ctfhub{4a39f603ca5b3b53853e14b6}
内容拓展:
HTTP请求由四部分组成:请求行、请求头、空行、以及请求体(具体介绍见这篇大佬博客,同时引用一张图)http://t.csdnimg.cn/cwcnA
Method Request-URI HTTP-Version CRLF
Method:表示请求方法;
Request-URI:是一个统一资源标识符;
HTTP-Version:表示请求的HTTP协议版本;
CRLF:表示回车和换行
GET /index.php HTTP/1.1
这里的Method是指GET ,URI为index.php, HTTP版本为1.1
HTTP协议中常用以下请求方法:
GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
CONNECT 保留将来使用,HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
PATCH 用于将局部修改应用到资源。
其中前三个是http/1.0版本定义的,后面几个为http/1.1补充定义的。
2.302跳转
题目解释:
进入题目后发现点击“Give me flag”界面不发生更改,服务器返回新的地址,说明我们应该考虑状态重定向的问题即“302”重定向
解题须知:HTTP状态码|菜鸟教程进行详细了解(以下内容均摘录来自次处)
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。
HTTP 状态码的英文为 HTTP Status Code。
- 1xx(信息性状态码):表示接收的请求正在处理。
- 2xx(成功状态码):表示请求正常处理完毕。
- 3xx(重定向状态码):需要后续操作才能完成这一请求。
- 4xx(客户端错误状态码):表示请求包含语法错误或无法完成。
- 5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误。
而我们这里就是重定向状态码中的“302” :
301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI |
这里我们要进行区分二者的永久性和临时性,即302是临时重定向到另外的网址上(这只是暂时的),这时就需要我们进行拦截抓包。
解答:
打开题目使用bp进行拦截操作,步骤如下:
在这个界面将“Intercept is off”(拦截关闭)改为“Intercept is on”(拦截打开),再次点击“Give me flag”,bp将成功拦截
将内容发送到Repearter(重放器)中,重新发送获得响应
ctfhub{f1604305006082bff698c676}
3.cookie
题目解释:
你好用户。只有管理员才能获取flag。
这里的题目核心是用户身份改变为管理员即可获取flag信息
解题须知:
Cookie实际上就是http协议里的头部字段,通常被放到response-header中通过Set-Cookie返回,当用户浏览网站时,浏览器进行储存下次访问会带上。
而Cookie的作用就是由开发者定义的,存储登入状态的信息。简单来讲,就是通过Cookie值来验证用户身份。
解答:
同样我们使用bp抓包
可以看到这里的 Cookie:admin=0, 也就是说这里的用户身份不是管理员,管理员的状态是0。
我们需要改变用户身份为管理员,只需要将admin=0,改为admin=1,即可以正常获取flag信息
将内容发送到Repearter(重放器)中,更改后重新发送send获得响应response(放包过程),flag正常出现
ctfhub{9eca59ed0b527f714bdbe80c}
4.基础认证
题目解释:
我们可以看到题目提供了附件(密码字典),可以分析出这道题关键在于密码爆破
解答:
进入靶场点击“click”进行登录,通过bp拦截(“Intercept is off”(拦截关闭)改为“Intercept is on”)抓包。
在请求头信息中,我们发现Authentication(主要用于认证验证用户身份)里面包含客户端向服务器提供的认证数据。
通过观察我们可以看到右上角Inspector中关于Authentication内容的编码转换
admin:123456 (这里的123456是作者自行输入的)
下面正式开始进行爆破,将包发送到Intruder进行爆破
进入Intruder--Payloads
将密码字典加载(load...)到Payload settings
在Payload process中添加(add)Add prefix,编辑prdfix的内容( : 记住用英文)
admin:
由于密码编码通过Base64,所以我们还需要add Encode
完成后点击右上角“Start attack ”,之后即可以找到我们需要的正确密码
我们将正确的send Repeater,重新发送,观察响应
ctfhub{234a9e8e2933b993bce2fde8}
5.响应包源代码
题目解释:
直接查看源代码即可
解答:
ctfhub{d156fb27330bff9e4f62d700}