站长资讯网
最全最丰富的资讯网站

了解:shell脚本+脚本优化+脚本注入+正则表达式

密码脚本编写

创建一个简单的入门级猜数密码脚本

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

这里无论输入是否正确都会退出,需要做脚本优化

脚本优化

创建一个简单的猜数密码脚本

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

给文件添加可执行权限

chmod +x /sh/caizi.sh

执行脚本

. /sh/caizi.sh

了解:shell脚本+脚本优化+脚本注入+正则表达式

这里没有对密码输入类型和长度进行设置,可以正则表达式对输入内容做初步限制

正则表达式

vim /sh/caizi.sh

#!/bin/bash

while :

do

read -p 'please input your number:' x

echo -e $x | egrep -q '[0-9a-zA-Z]+$' #限制必须输入数字或大小组名

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

了解:shell脚本+脚本优化+脚本注入+正则表达式

(a-z无法和1-9比较)

简单的脚本注入

输入注入代码

please input your number: 1 -eq 1 -o 123

未作正则表达式

了解:shell脚本+脚本优化+脚本注入+正则表达式

做了正则表达式

了解:shell脚本+脚本优化+脚本注入+正则表达式

这里运用的是输入没有限制可以注入相应的脚本(如‘-’)从而绕过密码并且还可以执行其他命令甚至获取root权限

由此可见简单的入门脚本可以通过脚本注入的方法实现无需密码登陆十分不安全,这时我们就需要用到正则表达式对输入的密码做限制过滤传入的参数。

正则表达式

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]+$' #限制必须输入数字或大小组名

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改为其他命令,这样输入正确就会执行其他命令)

了解:shell脚本+脚本优化+脚本注入+正则表达式

修改脚本功能:

如果密码输入正确创建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]+$' #限制必须输入数字或大小组名

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

了解:shell脚本+脚本优化+脚本注入+正则表达式

可以看到如果用户已创建还会执行,需进一步优化。

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]+$' #限制必须输入数字或大小组名

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

了解:shell脚本+脚本优化+脚本注入+正则表达式

虽然做了输入限制,但没有限制输入次数和时间可以通过暴力破解破解出密码,因而脚本还需要做进一步的脚本优化。

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号