攻防世界-web PHP2

首先我们先将环境下载下来。

进入之后 ,发现一句话

Can you anthenticate to this website?大概就是在说,你能告诉我这个网站吗?
嘶,先F12一手吧。啥也没有。然后扫描了一下目录。有一个index.php,然后在地址栏里输了一下,发现什么也没有。
这就很郁闷了。然后我在index.php后加了个s,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>";
}
?>

Can you anthenticate to this website?

又要代码审计了。

在这里我们先说一下===与==的区别

===是比较值和数据类型

==它是比较值,不比较数据类型

例如:$a='123'   $b=123

$a===$b    //False

$a==$b    //True

里面有一个urldecode,意思就是用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符

要求admin不能等于get传过来的值,又要求在get传过来的值经过urldecode后等于admin

而且浏览器会对非ASCII字符自动进行一次urldecode,所以我们还得编码两次。

所以pyload就为:

http://220.249.52.133:51297/index.php?id=%2561dmin

%2561解码就是%61   //第一次解码

%61解码就为a     //第二次解码

这样即可拿到flag

Key: cyberpeace{292e9413104ba4842802367e5e9da7aa}

最后再说一下index.phps吧

phps其实就是php Source,根据意思也可以知道是php源代码。

所以phps就是php的源代码文件。通常用来给用户查看php代码的。因为用户无法直接在Web浏览器查看php文件里的内容。然后需要用到phps文件来代替了。

原文地址:https://www.cnblogs.com/awsole/p/13859085.html