ctfhub技能树—web前置技能—http协议—基础认证

打开靶机环境

 

 

 下载附件后发现是常用密码字典,于是考虑本题可能是考察密码爆破

 

 

打开环境

发现需要认证,于是考虑使用暴力破解

 

使用burpsuite抓包,查看

 

 

 发现最下面一行有加密后的密文

使用base64解码

 

 

 发现是刚刚输入用于验证的账号密码

于是使用脚本把密码进行加密

附上脚本

#! /usr/bin/env python3
# _*_  coding:utf-8 _*_
import base64

# 字典文件路径
dic_file_path = './10_million_password_list_top_100.txt'
with open(dic_file_path, 'r') as f:
    password_dic = f.readlines()

username = 'admin:' # 用户名
for password in password_dic:
    str1=str.encode(username + password.strip())
    encodestr = base64.b64encode(str1)
    encodestr=str(encodestr)
    encodestr=encodestr.strip('b\'')
    encodestr=encodestr.replace("=","\=")   #避免“=”被转译
    print(encodestr)

运行后输出加密后的密文

 

 

 使用密文进行爆破

设置爆破的位置

 

 

 导入密码字典

 

 

 开始爆破

 

 

 成功拿到正确密码(密码是随机的,需要自己爆破)

解密

输入验证

 

 

 验证成功拿到flag

 

 

基础认证是什么?

1 在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供用户名和密码的一种方式。

具体如下(认证模型)

 

 

 

认证的四个步骤

1 请求: 客户端发起一条请求;第一条请求没有认证消息;
2 质询: 服务器对客户端进行质询;返回一条401 Unauthorized响应,并在www-Authenticate首部说明如何以及在哪里进行认证;一般指定对哪个安全域进行认证;
3 授权:客户端收到401质询,弹出对话框,询问用户名和密码,用户输入用户名和密码后,客户端会用一个冒号将其连接起来,编码成“经过扰码的”Base-64表示形式,然后将其放在Authorization首部中回送;
4 成功: 服务器对用户名和密码进行解码,验证它们的正确性,然后用一条HTTP 200 OK报文返回所请求的报文;

基本认证的安全缺陷

1 这个基础认证并不安全,因为每次传输都会带上认证信息,并且是明文的(BASE64是编码,不是加密),因此密码等信息可能会被嗅探器发现。
posted @ 2020-03-04 18:27  anweilx  阅读(4059)  评论(3编辑  收藏  举报