在BASH中循环获取用户名和密码元组

For loop in BASH to get username and password tuple

我正在用 Bash 4.4.23 编写一个简单的脚本,以对使用默认密码的各种 Web 服务器执行示范性的 字典攻击

包含用户名和密码的数组声明在"for"个循环之上,如下:

for i in $usernames
do for j in $passwords
    do printf '%s ' "${usernames[*]}:${passwords[*]}"
done
done

代码应该return类似于:

root:root root:admin admin:admin admin:root

而是 returning

root admin:root admin

哪些是数组中声明的值(usernamespasswords)。

我怎样才能实现我想要做的事情?然后必须将元组传递给 curl 以执行字典攻击。

通配符在这里不起作用。尝试

for i in $usernames
do for j in $passwords
    do printf '%s:%s ' "$i:$j"
done
done

您将数组和循环的元素混淆了。你遍历数组。您在循环内使用循环变量。

for i in "${usernames[@]}"
  do for j in "${passwords[@]}"
    do printf '%s:%s ' "$i" "$j"
  done
done

您看到的症状是因为 $usernames 单独引用数组的第一个元素,并且类似地引用另一个数组变量。