知识点
- 命令执行
- 绕过空格、敏感字符、连接符
pingping攻防世界做过都知道会可以有命令执行漏洞
那我们在这里ls 明显执行了我们的命令。可惜我们 执行下面的命令
cat flag.php
却被检测出黑客
经过尝试都失败。现在新知识。
会有如下的反应,显示我们有空格,我们需要绕过空格,这里提供几种方法供大家使用:
< <> %20 %09 $IFS$9 IFS IFS等等
这里我着重解释一下$IFS$9是什么意思 $IFS是bash中的内部域分隔符,可以代替空格至于后面的$9数字是可以随意的,我之前看过资料,每个数字都有特殊含义,但是和前面的搭配都可以表示空格;
ok 我们继续嵌入;发现说过滤了flag;于是我们先来cat一下index.php进行看看代码,得到代码如下
发现确实过滤了很多,看来得到flag要费不少力气,
这里介绍 三种方法绕过flag:
先来我的第一种,是利用变量拼接,来做。看过我之前写的love_math的都因该知道php函数可以赋给一个变量,那么同理我们这里让字符串赋值给变量,给我的payload /?ip=127.0.0.1;b=f;c=g;e=la;cat$IFS$9$b$e$c
ps: 参数顺序要注意,adc换位acdflag会被检测出来:)
再来第二种方法,叫做内联执行 就是借用反引号来达到执行命令的要求, 大家可以在linux环境下打开终端测试一下就ok这个很简单,也好理解。我们只需要嵌入 /?id=127.0.0.1;cat$IFS$9`ls{再来一个反引号闭合,这里我打不出来了,抱歉,理解就好}
第三种方法比较少用,就是借助bash命令或者sh命令来搞;这里因为之前看的index.php里面禁用了bash,所以我们这里使用sh来执行,具体代码如下
/?ip=127.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhw=$IFS$9|$IFS$9base64$IFS$9-d$IFS$9|sh
下面有关知识点:
过滤了?/\{}()[]*
否则bash语法可以用“?”,正斜杠“/”,数字和字母来执行系统命令。
过滤空格
**关键字过滤**
**命令分隔与执行多条命令**