buuctf-web Ping Ping Ping 1

启动靶机,启动环境。

 这显示了/?ip=

那我觉得可以构造一手Pyload来ping一下

/?ip=127.0.0.1

还真的Ping通了

然后我们可以用管道符来试着查看一手目录了

这里我们来解释一下管道符

“|”,这个竖线就是管道符,这个管道符的作用就是将命令A的输出结果作为命令B的输入条件

也就是我们常说的这样一种格式 "命令A|命令B"这样一种形式

然后我们使用一下管道符来查一下

/?ip=127.0.0.1|ls

这里的ls就是用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。是linux下的命令

大概意思就是显示本主机当前的所有文件

 然后我们查到了两个php文件:flag.php和index.php

看见了flag.php,那当然要对它进行操作了,显示它,

?ip=127.0.0.1|cat flag.php

 然后扔给了我个这东西,fxck,看来是被和谐了,应该是空格被过滤了

试着解决一下空格被过滤的问题,百度一手

 上面是使用$IFS

这个貌似是内部字段分隔符的缩写,它决定Bash解析字符串时将怎样识别字段,或单词分界线。默认为(空格、制表符、换号)(这里的Bash其实就是一种shell)

然后构造pyload

?ip=127.0.0.1|cat$IFS$9flag.php

后面的$9随便一个数字就可以。

 忙活了大半天,才知道flag也被和谐了,被过滤掉了。行了,还是看看index.php吧

 通过这段代码才发现,好多字符都被过滤了,但是在最后我们看到了a变量,那我们是不是可以将a的值覆盖,然后进行绕过呢?

/?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php

 看着也没什么不同嘛,这咋回事啊

不用急,咱先看一手源码。可能会发现大陆欧。

 看,是吧。flag就藏在源码里

原文地址:https://www.cnblogs.com/awsole/p/13817670.html