攻防世界PHP2

1、打开靶机链接http://61.147.171.105:49513/,没有发现任何线索

2、尝试访问http://61.147.171.105:49513/index.php,页面没有发生跳转

3、尝试将访问 尝试访问http://61.147.171.105:49513/index.phps

index.phpindex.phps 文件之间的主要区别在于它们的文件扩展名。

  1. index.php: 这是一个标准的 PHP 文件,通常用于编写 PHP 代码。当用户访问 index.php 文件时,Web 服务器会解释其中的 PHP 代码,并将结果发送给用户的浏览器。PHP 文件可以包含 HTML、CSS、JavaScript 以及服务器端的 PHP 代码。

  2. index.phps: 这个文件名可能是由开发人员自定义的,它的扩展名 .phps 是一种特殊的命名约定,通常用于显示 PHP 源代码而不是执行它。如果用户访问 index.phps 文件,Web 服务器通常会直接将文件内容发送给浏览器,而不会解释其中的 PHP 代码。这对于演示和学习目的可能会有用,但不建议在生产环境中使用这种方式,因为它会暴露服务器端的代码。

总之,index.php 是一个标准的 PHP 文件,用于执行 PHP 代码,而 index.phps 可能用于显示 PHP 源代码。

<?php
if("admin"===$_GET[id]) {
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
  echo "<p>Access granted!</p>";
  echo "<p>Key: xxxxxxx </p>";
}
?>

补充知识:

1、urldecode为解码和urlencode为编码

2、$_GET本身自带一次urldecode解码,即浏览器对url本身有一个检测,对于输入的中文、日文、俄文、和一些特殊字符进行解码,对于字母、数字等合法字符不会进行解码。 

3、urldecode()函数为php解码            

4、所以我们如给直接给参数传参admin会杯第一个if过滤掉。又考虑由于浏览器会对GET参数进行一次URL解码,加上PHP源码中的urldecode($_GET[id])有对可变参数进行一次解码,总共会给参数进行2次解码。考虑先将参数admin先进行编码两次

对于字母a进行urldecode编码之后为%61,在对%进行urldecode编码之后为%2561

所以参数输入id=%2561dmin,这样的话浏览器先对参数编码一次为%61dmin,然后参数传入PHP服务器后为%61dmin,所以代码中的第一个if判断结果为false如下:

"admin"===$_GET[%2561dmin]

===(全等运算符):=== 运算符执行严格比较,它不会进行类型转换。
只有在两个操作数的值相等且类型也相同时,=== 运算符才返回 true,否则返回 false。
在严格比较中,值和类型都必须相同才会被视为相等。

例如:var_dump(1 === "1"); // 输出 bool(false)

然后$_GET[id] = urldecode($_GET[id])中urldecode再一次编码为了admin,跳到第二个if函数执行判断为true,获取flag

$_GET[%61dmin] == "admin"

==(相等运算符):== 运算符执行松散比较,它会在比较之前尝试将操作数转换为相同的类型。
如果两个操作数的值相等,那么 == 运算符返回 true,否则返回 false。
在松散比较中,类型不同的值可能会被视为相等。
例如,字符串 "1" 和整数 1 在使用 == 运算符比较时会被视为相等。

var_dump(1 == "1"); // 输出 bool(true)

总结:

1、尝试在url后面+inedx.php或index.phps,看页面变化

2、浏览器会对用户传入的参数进行urldecode解码,只会进行一次,并且直接将解码后的参数传给服务器php源码中

3、”==“ 是相等运算符,比较值相等,不比较类型;"===" 是全等运算符,值与类型都比较

4、urldecode为解码,urlencode为编码

5、参考:URL特殊字符编码对照表_bce6b8a5e6598e8-CSDN博客

相关推荐

  1. CTF-web-攻防世界-2

    2024-05-14 00:48:02       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-14 00:48:02       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-14 00:48:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-14 00:48:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-14 00:48:02       18 阅读

热门阅读

  1. git把repo1中的test目录中的代码同步到repo2中

    2024-05-14 00:48:02       10 阅读
  2. 孩子如何备考编程竞赛

    2024-05-14 00:48:02       7 阅读
  3. 1-3 如何学习,才能让这门课真正发挥价值

    2024-05-14 00:48:02       10 阅读
  4. 21、Flink 的 Checkpoints 使用介绍

    2024-05-14 00:48:02       7 阅读
  5. Linux——进程的优先级、ACL

    2024-05-14 00:48:02       10 阅读