进来之后是一个工控云管理系统,左边一堆只有设备维护中心有跳转。
此时的url也发生了改变
没头绪,到处瞎点试一试
发现点了左上角的设备维护中心之后有变化,并且参数会显示出来。
修改参数发现始终会显示在页面下方
使用index.php,返回ok
尝试读取index.php内容
http://61.147.171.105:54575/index.php?page=php://filter/resource=index.php
尝试直接读取,发现会无限循环
然后题目直接挂了...环境异常,重启一下
http://61.147.171.105:58719/index.php?page=php://filter/convert.base64-encode/resource=index.php
通过base64读取了内容
解码后发现关键内容如下
将http头的X-Forwarded-For改为127.0.0.1
下面用到preg_replace 函数来进行命令执行,这个函数一般用来执行一个正则表达式的搜索和替换。
语法 mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换。
参数说明: $pattern: 要搜索的模式,可以是字符串或一个字符串数组。
$replacement: 用于替换的字符串或字符串数组。
$subject: 要搜索替换的目标字符串或字符串数组。
$limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。
$count: 可选,为替换执行的次数。
/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。
下面利用命令执行查找flag
?pat=/test/e&rep=system("ls")&sub=just test
?pat=/test/e&rep=system("cd s3chahahaDir;ls -la")&sub=just test
最后读取文件内容,获得flag
?pat=/test/e&rep=system("cat s3chahahaDir/flag/flag.php")&sub= just test