Linux系统shell工具打印输出
shell脚本都是以#!/bin/bash开头;这是固定的写法,其中/bin/bash是bash命令的路径。那么Linux系统shell工具如何打印输出呢?跟我一起来看看吧!
一般都会通过chmod授予shell脚本的可执行权限。
在shell脚本中的打印输出通常会有echo和printf两种,前者会自动换行。
在shell中如果用双引号("")作为打印输出的内容时,如果双引号中有特殊字符需要在特殊字符前加上转义字符\,当然也可以使用单引号或者不使用引号直接输出,使用单引号或者不使用就不需要用到转义字符。
格式替代符
有一些常用的格式替代符会经常在打印输出中被用到,格式替代符只能用在printf输出中。
%-5s:表示5个字符宽度,其中的-表示左对齐
%-4.2f:其中的f表示浮点型,4.2代表长度为4个字符且小数点2位,如果小数点超过2会进行四舍五入,-表示左对齐。
整形:
%d:整数的参数会被转成一有符号的十进制数字
%u:整数的参数会被转成一无符号的十进制数字
%o:整数的参数会被转成一无符号的八进制数字
%x:整数的参数会被转成一无符号的十六进制数字,并以小写abcdef表示
%X:整数的参数会被转成一无符号的十六进制数字,并以大写ABCDEF表示
浮点型数:
%fdouble型的参数会被转成十进制数字,默认取小数点以下六位,四舍五入
%edouble型的参数以指数形式打印,有一个数字会在小数点前,六位数字在小数点后,而在指数部分会以小写的e来表示.
%E与%e作用相同,唯一区别是指数部分将以大写的'E来表示.
%gdouble型的参数会自动选择以%f或%e的格式来打印,其标准是根据欲打印的数值及所设置的有效位数来决定.
%G与%g作用相同,唯一区别在以指数形态打印时会选择%E格式.
字符及字符串:
%c读字符串的第一个字符
%s输出指定宽度的字符内容.
%p如果是参数是"void*"型指针则使用十六进制格式显示
打印输出
在写脚本的时候更多的会使用echo作为打印输出,且习惯性的会使用双引号。
echo
[root@localhosttmp]#echo"helloword"
helloword
printf
默认printf是不换行的
[root@localhosttmp]#printf"helloword"
helloword[root@localhosttmp]#
需要换行加上\n参数
[root@localhosttmp]#printf"helloword\n"
helloword
[root@localhosttmp]#
编写shell脚本
vimscrip.sh
#!/bin/bash
printf"%-5s%-10s%-4s\n"NoNameMark
printf"%-5s%-10s%-4.2f\n"1aaa10.111
printf"%-5s%-10s%-4.2f\n"2bbb20.146
授予脚本执行权限:chmodu+xscrip.sh
如果使用echo就不能用格式替代符
#!/bin/bash
echoNoNameMark
echo1aaa10.111
echo2bbb20.146
注意事项
在echo,printf中使用-e,-n参数时,-e,-n应该出现在命令行其它字符之前。
-e:如果要在echo的双引号使用转义序列作为参数得需要使用-e参数
-n:忽略末尾的换行符
不使用-e参数
[root@localhosttmp]#echo"1\n2"
1\n2
使用-e参数
[root@localhosttmp]#echo-e"1\n2"
转义序列:
/n:换行
/t:tab键
彩色输出
字体颜色包括:0=重置,30=黑色,31=红色,32=绿色,33=黄色,34=蓝色,35=洋红,36=青色,37=白色
背景颜色包括:0=重置,40=黑色,41=红色,42=绿色,43=黄色,44=蓝色,45=洋红,46=青色,47=白色
echo-e"\e[132mhelloword\e[0m"
\e[132m:将字体颜色设为绿色,\e[0m:将颜色重置
介绍一款基于 Python 开发的 反弹 shell 管理工具 Reverse-Shell-Manager
在 CTF线下赛 的时候 , 如果通过 web 或者 pwn 已经拿到了一台服务器的控制权
那么我们可以使用反弹 shell 来对该服务器进行一个长期的权限维持
一般反弹 shell 的时候我们会怎么做呢 ?
比如说这里有一个台服务器可以 RCE 了
如果要反弹的话 , 我们首先要在自己的服务器上监听一个端口 :
然后再在目标服务器上执行 :
这样就能拿到该服务器的 shell 了
但是
一旦链接断开 , 那么就要重新利用漏洞反弹一个新的 shell
这样是不是很麻烦 , 而且还会暴露漏洞是如何被利用的
如果对方抓取了流量进行分析的话 , 很快就会把漏洞补上
而且
一般线下赛很多时候需要一些自动化的脚本来运维和进行权限维持
所以写了一个小工具 , 希望能有用
大概功能就是 :
下面有一个简单的介绍视频 :
如果可以给你带来帮助的话 , 可不可以 Star 一下呐 , ヽ(✿゚▽゚)ノ
外部命令有时候也被称为文件系统命令,是存在bash shell之外的程序。它们并不是shell程序的一部分。外部命令通常位于/bin, /usr/bin, /sbin /usr/sbin中,而内建命令都是和shell编译成一体的程序,作为shell工具的组成部分存在。不需要借助外部程序文件来运行。
可以通过type命令查看命令是否是内建命令或者外部命令,如
当外部命令被执行时,会创建一个子进程。这种操作被称为衍生(forking)。外部命令ps很方便显示出它的父进程以及自己所对应的衍生子进程。而内建命令不需要打开程序文件,内建命令的执行速度要更快,效率更高。
注意:有些命令有多种实现。例如echo和pwd既有内建命令也有外部命令。
有两个比较好用的内建命令history 和 alias
shell会自动记录shell运行的历史记录,history命令可以查看,使用 ! 和数字可以调用相应编号的历史命令
alias命令可以给较长的命令取别名,方便使用。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)