Problem: [GXYCTF 2019]Ping Ping Ping
思路
- 1.输入www.baidu.com

- 发现网站执行了ping命令(相当于ping www.baidu.com)

2.输入www.baidu.com;ls(相当于ping www.baidu.com;ls)两个命令ping ls

网站在底部列出了flag.php index.php两个文件(上面是ping命令输出的不用管)

- 下一步准备用cat输出index.php

但发现不行

我们考虑有空格过滤(就是输入框内容不能有空格)
上网查一下Linux空格绕过(就是把空格替换掉)

接下来一个一个进行测试

发现$IFS$9可以使用

4.分析index.php 发现这个问题中的PHP正则表达式条件 preg_match("/.*f.*l.*a.*g.*/", $ip) 用于检查变量 $ip 是否按顺序包含字符 f、l、a、g,且各字符之间可以有任意数量的其他字符。(可百度PHP中的preg_match函数)
我们的绕过方法就是使用变量不让flag顺序输入(详见EXP)
- 发现没反应,这时点击F12查看元素会发现flag

EXP
总结
- 熟悉Linux命令,敏感字符绕过,php代码审计

