渗透测试(四)shell(全)

声明:

学习视频来自B站up主【泷羽sec],如涉及侵权行为请马上删除文章,文章所提及内容,均为学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!

课程链接:泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频
所用工具参考以下链接https://pan.quark.cn/s/d3121f368675

shell(全)

建立一个1.sh

vim 1.sh

可以利用 /bin/sh, /bin/bash,/bin/dash 这三种其实都调用的dash这个解释器

比如 ls -l /bin/sh或者/bin/bash 得到的都是dash

比如先vim 1.sh

然后ehco hello word 然后保存退出运行一下

1.运行之前要先给权限 不然不能执行(chmod 777 1.sh或者chmod u+x 1.sh)

2.还可以直接用sh/dash/bash 1.sh,也能直接运行(因为他们是脚本执行器)

3.source 1.sh 也可以直接执行,但是颜色也会加深

变量的使用

name=“xixi”

echo $name

age=“27”

echo $age

echo my name is $name,and my age is $age years old

echo "my name is $name,and my age is $age years old" ​ 打印数值

echo 'my name is $name,and my age is $age years old'​ 没有打印数值,而是打印变量

echo my name is $name,and my age is $ageyears old​ 没有这个变量时,就会为空

echo my name is $name,and my age is "$age" years old​ 打印数值

echo my name is $name,and my age is {$age} years old​ 打印数值和大括号

变量名最好不要用空格,一般是数字、字符、字符串

set | grep name 筛选出带name的变量

unset name 可以删除name变量

永久环境变量

常见的变量

echo $HOME (root用户)

echo $PATH 环境变量

which ls 查看ls的路径

变成永久变量的方法

1.把脚本写到/usr/bin目录下

vim 1.sh

cat 1.sh 查看

mv 1.sh /usr/bin 移动

1.sh 直接执行

2.把 /root/这个目录放在环境变量中

export PATH=/root:PATH

echo $PATH

vi .bashrc

export PATH=/root:PATH

source /usr/bin .bashrc 变量生效,重启生效

新打开一个终端执行1.sh

字符串相关操作

name ="xixi" age="11"

echo "my name is $name,and my age is $age years old"

str ="hello world"

echo ${#str:0:7} ​类似于python切片,输入hello w

脚本参数传递

vim 2.sh

echo 执行的文件名是:$0

echo 第一个参数是:$1

echo 传递的参数作为一个字符串显示:$*

echo 传递的参数独立作为每个字符串显示:$@

echo 传递到脚本的参数个数是:$#

echo 最后命令的退出状态: ? e c h o 脚本运行的当前进程 I D 是: ? echo 脚本运行的当前进程ID是: ?echo脚本运行的当前进程ID是:$

sh 2.sh name 添加参数name

修改脚本

echo 执行的文件名是:$0

echo 第一个参数是:$1

echo 第二个参数是:$2

echo 第三个参数是:$2

echo 传递的参数作为一个字符串显示:$*

echo 传递的参数独立作为每个字符串显示:$@

echo 传递到脚本的参数个数是:$#

echo 最后命令的退出状态: ? e c h o 脚本运行的当前进程 I D 是: ? echo 脚本运行的当前进程ID是: ?echo脚本运行的当前进程ID是:$

执行sh 2.sh 1 2 3

数学运算

expr 1 + 2​ 必须隔开写,不然当参数了

expr 1 - 2

乘法 expr 20 \* 10

除法 20 / 10

取余 expr 20 % 10

混合 expr 5 + 10 \* 10

​`expr \(5 + 10\) \* 7`​

num=`expr 5 + 10`​ 反引号转义

或者num=$(expr 5 + 10)

echo $num
在这里插入图片描述

​​

脚本与用户交互

read name age

xixi 11

echo $name

echo $age

bash

read -p “请输入您的姓名:” name

xixi

echo $name

read -t 10 -p “请输入您的姓名:” name

read -n 3 -t 10 -p “请输入您的姓名:” name

-n限定字符数量

-p 指定输入

-t 限定输入时间

脚本编写模拟

vim 3.sh

read -p “请输入您的姓名:” name

echo “您输入的姓名是 $name,请您确认!”

关系运算符

-eq 相等

-lt 小于

-gt 大于

-ne 不等于

else 反转
只能对数值判断,不能对字符串判断

vim 4.sh

num1=78

num2=89

if [ n u m 1 − e q num1 -eq num1eq num2 ] ; then

echo 相等

else

echo 不相等

fi

字符串运算符

vim 5.sh

str1=“hello”

str2=“hello”

if [ "$str1” = "$str2" ]; then

echo true

else

echo false

fi

可以尝试修改大小写,看看是否字符串敏感

结果发现,大小写敏感,会出false

再把=改成≠ ,报true

检测字符串长度是否为0

vim 5.sh

str1=“hello”

str2=“hello”

if [ -z $str1 ]; then

echo true

else

echo false

fi

true 表示为0

-n参数就是检测是否不为0,和-z相反

检测是否为空

vim 5.sh

str1=“hello”

str2=“hello”

if [ "$str111" ]; then

echo true

else

echo false

fi

为空则返回为false

布尔运算

vim 6.sh

num1=9

if [ "$num" != "9" ]; then

echo num1 不等于9

else

echo num1 等于9

fi

sh 6.sh

余运算

vim 6.sh

num1=9

num2=19

if [ "$num" ≠ "9" -a "$num2" -lt "20" ]; then

echo true

else

echo false

fi

sh 6.sh

改为-o 就只需要满足一个条件就行,-a必须全部满足

if条件判断

bash

vim 7.sh

a=10

b=20

if [ "$a" -eq "$b" ]; then

echo “a=b”

elif [ "$a" -gt "$b" ]; then

echo “a>b”

elif [ "$a" -lt "$b" ]; then

echo “a<b”

else

echo “没有符合上述条件”

fi

for循环结构

vim 8.sh

for num in 1 2 3 4 5

do

echo “The number is $num”

done

vim 9.sh

for str in “hello world”

do

echo $str

done

vim 10.sh

for i in `seq 1 100`

do

echo $i

done

或者

for i in $(seq 1 100)

do

echo $i

done

或者

for i in ((i=1; i < 100; i++))

do

echo $i

done

while循环 遍历打印i从1到10 let:执行算数运算

vim 11.sh

i=1

while (( $i<=10))

do

echo $i

((i++))

done

或者

i=1

while (( $i<=10))

do

echo $i

let “i++”

done

until循环

i=0

until [ ! $i -lt 10 ]

do

echo $i

((i++))

done

case语句

read -p “输入一个值:” num

case $num in

1)echo 你输入的是1

;;

2)echo 你输入的是2

;;

*)echo 你输入的是其他数字

;;

esac

基本函数学习

DemoFunc () {

echo “hello world”

}

DemoFunc

DemoFunc () {

echo “hello world”

echo “My name is $1 :”

}

DemoFunc xixi

DemoFunc () {

echo “hello world”

echo "My name is $1 , and my age is $2 years old"

}

DemoFunc xixi 11

不同脚本互相调用

可以先rm *.sh​ 删除所有shell脚本

vim 2.sh

echo “hello world”

vim 3.sh

.2.sh

bash 3.sh

以上输出的是2.sh的内容

vim 2.sh

name=“xixi”

age=11

vim 3.sh

source 3.sh

echo "My name is $name , and my age is $age years old"

重定向

输出重定向

ls > 1.txt

cat 1.txt 就是把ls执行的内容放在1.txt里面

输入重定向

vim dirs.txt

/home/user/Docunments

/home/user/Pictures

/home/user/Music

ls -l < dirs.txt 就是把这几个目录的文件路径先作为ls -l命令的输入

文件描述符

0 1 2

0:标准输入

1:标准输入

2.错误输入

ls > 8.txt 2> 9.txt 如果ls命令正确那就输出到8.txt,如果不正确就输出到9.txt

cat 8.txt 有结果,表面正确输入

lll > 8.txt 2>9.txt

cat 9.txt

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值