CTF_WriteUp_HTTP基本认证(Basic access authentication)
HTTP基本认证
在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供用户名和密码 的一种方式。HTTP基本认证 。
题目描述
点击链接后,题目出现了让你输入用户名和密码的弹窗。而通过提示信息,我们知道用户名大概率是admin。而加之题目附件给出了字典。那么密码一定在给出的字典中。我们可以通过burp来进行爆破。
解题过程
抓包
首先设置火狐的代理,让火狐的走burpsuit的代理127.0.0.1:8080
要想方便的话,还是要用火狐的插件,方便切换代理。
同时在Burp端设置好截断,监听127.0.0.1:8080
然后拦截我们输入密码的那一次请求
确定之后,我们会在burp的代理页面看到HTTP报文
我们注意到最后一行,Authorization :Basic
后面应该是一行base64编码。
解码之后我们就可以发现,我们刚刚输入的账号名的密码通过Base64 编码加密了。
爆破
在代理的界面右键转发到测试器。
攻击位置,我们选择刚刚我们测试的base64。
然后我们设置payload
我们设置为自定义的迭代器
位置1
位置2
对我们的payload进行base64编码处理
之后我们就可以开始进行爆破了。
筛选出来唯一一条正确响应的那条记录
查看响应包。
获取flag。
相关知识
HTTP基本认证
HTTP基本认证 是一种十分简单的技术,使用的是 HTTP头部字段 强制用户访问网络资源,而不是通过必要的cookie、会话ID、登录页面等(非获取访问控制的)手段。
在进行基本认证的过程里,请求的HTTP头字段会包含Authorization字段,形式如下: Authorization: Basic <凭证>
,该凭证是用户和密码的组和的base64编码。
过程
首先请求一个需要身份认证的网页,会有弹窗提示让你输入密码。如果没有提供用户名和密码,服务端会响应一个401应答码,并提供一个认证域(Access Authentication):头部字段为:WWW-Authenticate
,该字段为要求客户端提供适配的认证信息。
GET /private/index.html HTTP/1.0
Host: localhost
HTTP/1.0 401 Authorization Required
Server: HTTPd/1.0
WWW-Authenticate: Basic realm="Secure Area"
Content-Type: text/html
Content-Length: 311
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>
注意上面的WWW-Authenticate: Basic realm="Secure Area"
的这一字段。Basic
为验证的模式,realm="Secure Area"
为保护域,用于与其他请求URI作区别。
接到应答后,客户端显示该认证域(输入用户名和密码的框框)。给用户并提示输入用户名和密码。此时用户可以选择确定或取消。
用户输入了用户名和密码后,客户端软件将对其进行处理,并在原先的请求上增加认证消息头(Authorization)然后重新发送再次尝试。过程如下:
- 将用户名和密码拼接为
用户:密码
形式的字符串。 - 如果服务器WWW-Authenticate字段有指定编码,则将字符串编译成对应的编码(如:UTF-8)。
- 将字符串编码为base64。
- 拼接
Basic
,放入Authorization头字段
,就像这样:Authorization :Basic 字符串
。- 这里注意Base64编码并非加密算法,其无法保证安全与隐私,仅用于将用户名和密码中的不兼容的字符转换为均与HTTP协议兼容的字符集。
GET /private/index.html HTTP/1.0
Host: localhost
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
服务端会进行基本认证,如果认证通过,则返回正确的页面。否则还是401 unauthorized
HTTP/1.0 200 OK
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:19:07 GMT
Content-Type: text/html
Content-Length: 10476
优点
简单,应用范围广
- HTTP基本认证是一种十分简单的技术,使用的是HTTP头部字段强制用户访问网络资源,而不是通过必要的cookie、会话ID、登录页面等(非获取访问控制的)手段
在可信网络环境中使用基本认证。
- 内部网络,或者对安全要求不是很高的网络。会结合HTTPS一起使用的,https保证网络的安全性,然后基本认证来做客户端身份识别。
缺点
- 基本认证 并没有为传送凭证(transmitted credentials)提供任何机密性的保护,仅仅使用 Base64 编码并传输,而没有使用任何加密算法。因此,基本认证常常和HTTPS 一起使用,以提供机密性。
参考资料
[1]. HTTP基本认证
[2]. 秒懂HTTP基本认证(Basic Authentication)
CTF_WriteUp_HTTP基本认证(Basic access authentication)的更多相关文章
- TortoiseGit拉取或推送,输入账号密码后提示 HTTP Basic: Access denied fatal: Authentication failed 解决方案
TortoiseGit拉取或推送项目,输入账号密码后,提示 HTTP Basic: Access denied fatal: Authentication failed. 大体意思是,HTTP基本认证 ...
- TortoiseGit拉取或推送项目提示 HTTP Basic: Access denied fatal: Authentication failed.
TortoiseGit拉取或推送项目提示 HTTP Basic: Access denied fatal: Authentication failed. 大体意思是,HTTP基本认证失败,访问被拒 ...
- HTTP基本认证(Basic Authentication)的JAVA实例代码
大家在登录网站的时候,大部分时候是通过一个表单提交登录信息. 但是有时候浏览器会弹出一个登录验证的对话框,如下图,这就是使用HTTP基本认证. 下面来看看一看这个认证的工作过程: 第一步: 客户端发送 ...
- HTTP基础认证Basic Authentication
HTTP基础认证Basic Authentication Basic Authentication是一种HTTP访问控制方式,用于限制对网站资源的访问.这种方式不需要Cookie和Session,只需 ...
- remote: http basic: access denied fatal: authentication failed for '‘解决办法
问题描述 由于这个项目代码使用https 进行clone,为什么?因为代码库ssh有问题!fuck! 导致在push代码的时候出现了 remote: http basic: access denied ...
- git Remote: HTTP Basic: Access denied Git failed with a fatal error.
解决方案: git clone 项目失败,报下面的错误信息: $ git clone http://192.168.0.141/xxxx.git Cloning into 'appEnterprise ...
- git中出现remote: HTTP Basic: Access denied
git中出现remote: HTTP Basic: Access denied 1.git clone时出现 Username for 'http://******': *** remote: HTT ...
- HTTP认证之基本认证——Basic(二)
导航 HTTP认证之基本认证--Basic(一) HTTP认证之基本认证--Basic(二) HTTP认证之摘要认证--Digest(一) HTTP认证之摘要认证--Digest(二) 在HTTP认证 ...
- git clone remote: HTTP Basic: Access denied
git clone 项目失败,报下面的错误信息: $ git clone http://192.168.0.141/xxxx.git Cloning into 'appEnterprise'... r ...
随机推荐
- ant:如何用ant将web project打包成war包
说明:src中的文件将不会呈现出来,诸位可以自己写一个简单的web项目,然后依照我所提供的ant脚本配置来设置. 文件结构如图所示: 配置为下: build.xml < ...
- Redis:slave flush old data造成实例不可用
一.问题描述 2019-02-22凌晨02:42分前后,收到集群中 [10.32.52.8:6500] 实例不可用告警,登陆管理界面查看此实例在正常运行状态,期间未出现机器宕机或实例直接挂掉的现象. ...
- Python 零基础入门
Python 零基础入门 1.1 Python介绍 Python 是一门优雅且健壮的面向对象解释型计算机程序编程语言,具有面向对象.可升级.可扩展.可移植 语法简洁清晰易学.易读写.易维护.健壮性.通 ...
- 探究 Go 语言 defer 语句的三种机制
Golang 的 1.13 版本 与 1.14 版本对 defer 进行了两次优化,使得 defer 的性能开销在大部分场景下都得到大幅降低,其中到底经历了什么原理? 这是因为这两个版本对 defer ...
- 8.【Spring Cloud Alibaba】配置管理-Nacos
使用Nacos管理配置 架构图 配置文件遵循的格式 bootstrap.yml pom.xml <dependency> <groupId>org.springframewor ...
- Java入门教程二(语言基础)
常量与变量 常量值又称为字面常量,它是通过数据直接表示 常量 实型常量值 Java 的实型常量值主要有如下两种形式 十进制数形式:由数字和小数点组成,且必须有小数点,如 12.34.-98.0 科学记 ...
- 重置gitlab管理员密码
gitlab web管理员登录密码忘记以后可以用如下方式修改密码(本演示系统为Linux-CentOS6.6): [root@localhost ~]# gitlab-rails console pr ...
- spring——AOP原理及源码(四)
前情回顾: 上文我们一路分析了从容器创建开始直到我们的AOP注解导入的核心组件AnnotationAwareAspectJAutoProxyCreator执行postProcessBeforeInst ...
- 微服务优化之使用gRPC做微服务的内部通信
使用gRPC做微服务的内部通信 gRPC是一个由Google开源的远程服务调用框架,具有多路复用和双向流式通信的特性. 大家好,在本文中将为大家介绍为什么我们应该使用gRPC代替RESTful或JSO ...
- mongodb忘记密码处理步骤
mongodb忘记密码的处理办法较MySQL等数据库而言方法显得更加暴力,处理方式如下: 1. 修改mongodb的配置文件 mongodb的配置文件一般可以通过查看进程的方式查看文件名,例如: p ...