Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For循环在BASH中获取用户名和密码元组_Bash_Dictionary Attack - Fatal编程技术网

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

For循环在BASH中获取用户名和密码元组,bash,dictionary-attack,Bash,Dictionary Attack,我正在用bash4.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 但它正在

我正在用bash4.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才能执行字典攻击。

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

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单独引用数组的第一个元素,而另一个数组变量也是如此。

这里没有通配符${usernames[*]}是指整个数组的方式,尽管${usernames[@]}更正确一些,就像您应该更喜欢$@而不是$*。