攻防世界 PHP2
开启场景
访问 /index.php,页面无变化
访问 /index.phps
index.php 和 index.phps 文件之间的主要区别在于它们的文件扩展名。
- index.php:这是一个标准的 PHP 文件,通常用于编写 PHP 代码。当用户访问 index.php 文件时,Web 服务器会解释其中的 PHP 代码,并将结果发送给用户的浏览器。PHP 文件可以包含 HTML、CSS、JavaScript 以及服务器端的 PHP 代码。
- index.phps:这个文件名可能是由开发人员自定义的,它的扩展名 .phps 是一种特殊的命名约定,通常用于显示 PHP 源代码而不是执行它。如果用户访问 index.phps 文件,Web 服务器通常会直接将文件内容发送给浏览器,而不会解释其中的 PHP 代码。这对于演示和学习目的可能会有用,但不建议在生产环境中使用这种方式,因为它会暴露服务器端的代码。
总之,index.php 是一个标准的 PHP 文件,用于执行 PHP 代码,而 index.phps 可能用于显示 PHP 源代码。
右键查看页面源代码
$_GET本身自带一次urldecode解码,即浏览器对url本身有一个检测,对于输入的中文等和一些特殊字符进行解码,对于字母、数字等合法字符不会进行解码
直接传参admin会被第一个 if 过滤掉,由于浏览器会对GET参数进行一次URL解码,加上PHP源码中的 urldecode($_GET[id]) 会对可变参数进行一次解码,一共会给参数进行2次解码,所以先将参数 admin 先编码两次。字母a进行urldecode编码之后为%61,在对%进行urldecode编码之后为%2561
所以参数输入 id=%2561dmin,浏览器先对参数编码一次为 %61dmin,然后参数传入PHP服务器后为 %61dmin,然后 $_GET[id] = urldecode($_GET[id]) 中 urldecode 再一次编码为 admin,跳到第二个 if 函数执行判断为true,得到了 flag
cyberpeace{ff251a03a5ed13c1fbe7acc389e0e049}