密码脚本编写

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

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

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

正则表达式

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

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

简单的脚本注入

输入注入代码

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

未作正则表达式

做了正则表达式

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

修改脚本功能:

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

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

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

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

转载于:https://blog.51cto.com/14172893/2356387

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

  1. ios重签名shell脚本_iOS逆向——shell重签名及代码注入

    感谢hank老师 上一章我们讲了应用签名原理和重签名原理,不再赘述,没有看过的同学可以点这里-- 这章概述shell脚本重签名.可能有的同学认为有很多工具都能快速的帮助我们重签名实现需求,但我更希望在 ...

  2. OGG维护优化脚本(一)-需求分析篇

    这套维护优化脚本,是我在业余时间编写的,专门用于针对goldengate数据同步工具的脚本 主要原因还是本人有点懒不喜欢繁琐的手动操作.所以借助shell脚本来减低自己的工作量 部分参考了一些网络大牛 ...

  3. shell一键生成密钥脚本

    shell一键生成密钥脚本 全局声明:以下脚本使用参数路径都来自系统默认,如有需要请自行更改. 初步脚本实例: ssh-keygen -t rsa -N '' <<EOF /root/.s ...

  4. linux 脚本编写基本命令,Linux Shell命令行及脚本编程实例详解

    <Linux典藏大系:Linux Shell命令行及脚本编程实例详解>共15章,分为两篇.主要内容包括:Linux 及Linux Shell简介.初识Linux Shell.常用Shell ...

  5. Linux系统shell脚本、python脚本编写

    GPU排队脚本 python脚本 GPU排队脚本 ---- GPU一旦空闲触发脚本执行程序 参考: GPU排队脚本(python脚本) cmd = 'bash run.sh' 该句设置要执行的pyth ...

  6. 将shell脚本转为python_shell脚本将python脚本加入Linux系统服务

    用shell脚本将Python脚本做成系统服务随着系统的启动而启动,同时又可以通过"service"命令进行管理(start|stop|restart) 新建 FuzzyMatch ...

  7. 刚搭建的linux环境的基本优化以及优化脚本---菜鸟初写

    本篇博文主要是参考并借鉴老男孩老师的优秀博文外加自己总结及写的优化脚本!博文地址:http://oldboy.blog.51cto.com/2561410/1336488 虽然我并没有参加过老男孩老师 ...

  8. Shell之/bin/bash脚本的基础实战

    本人菜鸟一枚,初次接触linux的shell脚本: shell script,最简单的功能就是将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令,而shell script更是提供了数组 ...

  9. linux下执行shell脚本文件,Linux下使用shell脚本自动执行脚本文件

    搜索热词 以下实例本人在Centos6.5 64位操作系统中使用 一.定时复制文件 a.在/usr/local/wfjb_web_back目录下创建 tomcatBack.sh文件 #将tomcat中 ...

  10. html5 防止脚本攻击,shell防ddos攻击脚本(二)

    在上一篇shell防ddos攻击脚本(一)中,我给大家发了个脚本,那只是针对单机的,如果是在负载均衡下的话,很容易把自己的服务器ip给误封,所以这篇文章就给大家发个可以添加白名单的shell脚本. 系 ...

最新文章

  1. 树莓派3b+目标检测: tflite 运行 mobilenet ssd
  2. Java之内存模型的基础、重排序、顺序一致性、volatile、锁、final
  3. 计算机网络:单播,多播
  4. 早期更多失败– Java 8
  5. node工程默认url_node 爬虫入门实例,简单易懂
  6. Bootstrap 模态框插件Modal 的方法
  7. 每日一题 2020.05.12
  8. shell条件判断 if else
  9. 试试用word发博客
  10. VS 2017安装教程
  11. 数据分析案例(6)淘宝电商数据客户价值分析
  12. java和android!怒斩获了30家互联网公司offer,分享PDF高清版
  13. 普通话转换成方言的语音识别方法
  14. 【程序人生】1024 程序员节——闲言鹤语
  15. linux下使用代理加速下载方案集合
  16. 格子玻尔兹曼机(Lattice Boltzmann Method)系列4:LBM实例之方腔驱动流
  17. Python爬虫爬取东方财富网的股票信息
  18. 用投影机控制软件2017 V3(可在多媒体教室代替遥控器中控机)
  19. JAVASE温故知新
  20. python输入城市名称_python - 使用熊猫一次将多个城市名称格式化为每个城市的通用名称 - 堆栈内存溢出...

热门文章

  1. 回顾 | Apache Flink 1.9 版本新特性强势预告!(内含PPT下载链接)
  2. 厉害了!为了干掉 HTTP ,Spring团队又开源 nohttp 项目!
  3. 视频画面帧的展示控件SurfaceView及TextureView对比
  4. mysql 分表查询外连接_SQL多表连接查询实例(内连接外连接)
  5. vue怎么自己创建组件并引用_关于vue如何创建一个自定义组件(这是项目中经常得用的)...
  6. 比豆二机器人好的机器人_电话机器人:电话机器人哪家好?选择电话机器人的标准是什么?...
  7. url参数拼接 php,js URL参数的拼接方法比较_javascript技巧
  8. CS224N刷题——Assignment2.3_RNN:Language Modeling
  9. Android开发之——依赖冲突Program type already present
  10. VR线下体验店群雄并起,超级队长为何能靠IP突围?