0

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

包含用户名和密码的数组在“for”循环上方声明,如下所示:

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

代码应返回如下内容:

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

但相反,它正在返回

root admin:root admin

哪些是数组中声明的值(用户名密码)。

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

4

2 回答 2

1

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

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

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

于 2019-02-25T09:59:05.253 回答
0

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

for i in $usernames
do for j in $passwords
    do printf '%s:%s ' "$i:$j"
done
done
于 2019-02-25T09:53:57.287 回答