密碼腳本編寫
創(chuàng)建一個簡單的入門級猜數(shù)密碼腳本
mkdir -v /sh
vim /sh/caizi.sh
#!/bin/bash
read -p 'please input your number:' x
if [ $x -eq 520 ]
then
echo 'you are right'
elif [ $x -gt 520 ]
then
echo 'you are bigger'
else
echo 'you are little'
fi
這里無論輸入是否正確都會退出,需要做腳本優(yōu)化
腳本優(yōu)化
創(chuàng)建一個簡單的猜數(shù)密碼腳本
vim /sh/caizi.sh
#!/bin/bash
while :
do
read -p 'please input your number:' x
if [ $x -eq 520 ]
then
echo 'you are right'
break
elif [ $x -gt 520 ]
then
echo 'you are bigger'
else
echo 'you are little'
fi
done
給文件添加可執(zhí)行權限
chmod +x /sh/caizi.sh
執(zhí)行腳本
. /sh/caizi.sh
這里沒有對密碼輸入類型和長度進行設置,可以正則表達式對輸入內(nèi)容做初步限制
正則表達式
vim /sh/caizi.sh
#!/bin/bash
while :
do
read -p 'please input your number:' x
echo -e $x | egrep -q '[0-9a-zA-Z]+$' #限制必須輸入數(shù)字或大小組名
if [ $ -ne 0 ]
then echo 'please enter numbers or letters'
elif [ $x -eq 520 ]
then
echo 'you are right'
break
else
echo 'you are wrong'
fi
done
(a-z無法和1-9比較)
簡單的腳本注入
輸入注入代碼
please input your number: 1 -eq 1 -o 123
未作正則表達式
做了正則表達式
這里運用的是輸入沒有限制可以注入相應的腳本(如‘-’)從而繞過密碼并且還可以執(zhí)行其他命令甚至獲取root權限
由此可見簡單的入門腳本可以通過腳本注入的方法實現(xiàn)無需密碼登陸十分不安全,這時我們就需要用到正則表達式對輸入的密碼做限制過濾傳入的參數(shù)。
正則表達式
vim /sh/caizi.sh
#!/bin/bash
while :
do
read -p 'please input your number:' x
y=$(echo -e $x | sed 's/-//g' )
echo -e $x | egrep -q '[0-9a-zA-Z]+$' #限制必須輸入數(shù)字或大小組名
if [ $ -ne 0 ]
then echo 'please enter numbers or letters'
elif [ $y -eq 520 ]
then
echo 'you are right'
break
else
echo 'you are wrong'
fi
done
(這里可以將退出命令break改為其他命令,這樣輸入正確就會執(zhí)行其他命令)
修改腳本功能:
如果密碼輸入正確創(chuàng)建520you用戶密碼為520,輸入失敗則直接退出
vim /sh/caizi.sh
#!/bin/bash
while :
do
read -p 'please input your number:' x
y=$(echo -e $x | sed 's/-//g' )
echo -e $x | egrep -q '[0-9a-zA-Z]+$' #限制必須輸入數(shù)字或大小組名
if [ $ -ne 0 ]
then echo 'please enter numbers or letters'
elif [ $y -eq 520 ]
then
echo 'you are right'
i=${x}you
useradd $i
echo "520" | passwd –stdin $i
break
else
echo 'you are wrong'
break
fi
done
可以看到如果用戶已創(chuàng)建還會執(zhí)行,需進一步優(yōu)化。
vim /sh/caizi.sh
#!/bin/bash
while :
do
read -p 'please input your number:' x
y=$(echo -e $x | sed 's/-//g' )
echo -e $x | egrep -q '[0-9a-zA-Z]+$' #限制必須輸入數(shù)字或大小組名
if [ $ -ne 0 ]
then echo 'please enter numbers or letters'
elif [ $y -eq 520 ]
then
echo 'you are right'
( i=${x}you
if id $i
then
echo "$i exist"
else
useradd $i
echo "520" | passwd –stdin $i
fi )
break
else
echo 'you are wrong'
break
fi
done
雖然做了輸入限制,但沒有限制輸入次數(shù)和時間可以通過暴力破解破解出密碼,因而腳本還需要做進一步的腳本優(yōu)化。