题目
authenticate:证明什么是真的
解题
观察题目可知,访问index.phps可能会有不一样的发现
http://61.147.171.105:51671/index.phps访问该链接,可以得到下面的界面
这里只显示出了部分代码,右键该界面,点击查看源代码,我们便可以查看到所有代码
这是一个 PHP 代码片段,用于检查用户是否具有访问网站的权限
第1行是 PHP 的开头标记,表示 PHP 代码的开始。
第2行检查通过 URL 传递的 'id' 参数的值是否等于 'admin'。如果它相等,则使用 'echo' 函数显示消息“not allowed!”并使用 'exit' 函数退出脚本。这是为了防止未经授权访问网站的管理员页面。
第7行使用 'urldecode' 函数解码 'id' 参数的 URL 编码值,将解码后的数值赋值给GET[id]
第8行检查 'id' 参数的解码值是否等于 'admin'。如果它相等,则使用 'echo' 函数显示消息“Access granted!”和一个密钥。
代码以 PHP 结束标记结束。
咱们的目的就是求出这个密钥了
函数urldecode urldecode() 是一个 PHP 函数,用于解码 URL 编码字符串。在 URL 中,一些字符是有特殊含义的,例如空格、问号、等号等。如果需要在 URL 中使用这些字符,就需要对其进行编码,将其转换成特定的编码格式。例如空格会被编码成 %20。urldecode() 函数可以将这些编码格式的字符解码回原始字符,以便使用或显示。
在上面的 PHP 代码片段中,urldecode() 函数用于解码传递的 'id' 参数的 URL 编码值,以便后续判断 'id' 参数的值是否等于 'admin'。
所以直接输入是不行的。http://61.147.171.105:51671/?id=admin 我们需要将admin进行转换,也就是进行url编码。可以借助burpsuit对admin进行url编码
浏览器解码一次,代码中解码一次,所以一共是解码两次,那么对应的就需要编码两次
因为浏览器本身会进行因此url解码,这里相当于进行两次url解码,所以我们要对admin进行两次编码,那么最后得到的应该是
http://61.147.171.105:51671/?id=%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65
相关知识点1:php代码和url编码
后缀名为.phps的文件:phps即php source,phps文件就是php的源代码文件,通常用于提供给用户查看php代码,因为用户无法通过web浏览器直接查看到php文件的内容,所以需要用phps文件代替