频道栏目
首页 > 系统 > Linux > 正文

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

2019-03-01 11:07:20           
收藏   我要投稿
密码脚本编写

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

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

2019-02-25_101417.png

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

正则表达式

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

2019-02-25_200602.png

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

简单的脚本注入

输入注入代码

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

未作正则表达式

2019-02-25_104730.png

做了正则表达式

2019-02-25_200657.png

这里运用的是输入没有限制可以注入相应的脚本(如‘-’)从而绕过密码并且还可以执行其他命令甚至获取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改为其他命令,这样输入正确就会执行其他命令)

2019-02-28_174546.png

修改脚本功能:

如果密码输入正确创建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

2019-02-28_180952.png

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

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

2019-02-28_192407.png

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

上一篇:当日志文件大于1G时清空文件,非删除
下一篇:如何通过IP获取MAC地址?如何通过mac来获取IP地址?
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站