For循环在BASH中获取用户名和密码元组
我正在用bash4.4.23编写一个简单的脚本,对使用默认密码的各种web服务器执行一个说明性的字典攻击 包含用户名和密码的数组在for循环上面声明,如下所示: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 但它正在
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[@]}更正确一些,就像您应该更喜欢$@而不是$*。