在之前的执行命令漏洞中,我们在输入参数的时候 ,会输入cat /flag,但是有的时候空格不能用,cat不能用,/flag不能用的时候该怎么样去解决呢,我们应该怎么样去cat /flag呢。
过滤空格
当我们没有办法使用空格的时候可以使用以下办法
$IFS ${IFS} $IFS$9 <(linux中表示导入) <>(导出) {cat, flag.php}(可以用逗号代替空格但是要{}括起来 %20 %09。
过滤关键字
比如cat ,falg等关键字不能使用,我们应该怎么办呢
1、转译,加\,把比如cat fla\g,flag里面加\其实和没有加是一样的,但是这样就可以不被过滤掉。
2、拼接、先打开python,然后就可以将flag写成‘fla’+‘g’.
那如果过滤了加号呢,其实可以不用加号,直接贴贴就好了。(之间存在空格也可以)
3、base64编码绕过,比如要cat Y1ng.php,
我们可以
4、hex编码,先进行hex编码然后xxd -r -p 解开hex然后 再bash
5、通配符
(1)、*表示任意长度的任意,cat flag.*。
(2)、?表示单个长度的任意,cat fla?,php。
(3)、[ ],比如[f-h]表示大于f小于h那么就只用g了。
(4)、{ },比如{f..h}表示大于等于f,小于等于h,就会有以下三种情况。
6、内联执行、
先ls | grep fla就可以找到flag文件,然后用反引号引起来`ls | grep fla`然后执行cat `ls | grep fla`它会先执行反引号里面的内容,然后再执行外面的命令。
除了反引号外,还可以使用以下样式cat $(ls | grep fla)。
7、变量
定义变量作拼接。
可以令$a=fl;b=ag;然后cat$a$b.php