一、准备工具
浏览器、burpsuit
二、解题/思考过程
1.进入题目场景
2.开始尝试
接下来尝试查看源代码:无事发生
再用burp抓包该网页:还是没啥特别的
再次查看题目:根据题目提示可知往PHP方向考虑,得到这个网站的认证
3.补充知识
3.1 index.php
index.php是一个常见的文件名,通常用于web服务器网站中的根目录下,在web应用中,index.php通常是网站的入口文件,它包含了处理用户请求的代码,与数据库进行交互并生成页面的相关内容等,同时它也是连接后端逻辑和前端界面的桥梁之一。
所以我们去请求index.php:还是风平浪静,无事发生
3.2 index.phps文件
查询资料发现还有.phps文件:
phps文件就是php的源代码文件,通常用于提供给用户(访问者)查看php代码,因为用户无法直接通过Web浏览器看到php文件的内容,所以需要用phps文件代替。其实,只要不用php等已经在服务器中注册过的MIME类型为文件即可,但为了国际通用,所以才用了phps文件类型。
所以我们去请求一下index.phps:好好好,得到一段php代码片段,用于检查用户是否有访问网站的权限
4.开始分析得到的语句
第一行是 PHP 的开头标记,表示 PHP 代码的开始。
第二行检查通过 URL 传递的 'id' 参数的值是否等于 'admin'。如果它相等,则使用 'echo' 函数显示消息“not allowed!”并使用 'exit' 函数退出脚本。这是为了防止未经授权访问网站的管理员页面。
第六行使用 'urldecode' 函数解码 'id' 参数的 URL 编码值。
第七行检查 'id' 参数的解码值是否等于 'admin'。如果它相等,则使用 'echo' 函数显示消息“Access granted!”和一个密钥。
5.用burp对admin进行url编码
代码以 PHP 结束标记结束。
对id=admin中的admin进行编码,但由于浏览器会进行一次解码,所以对admin进行两次编码得到%2561%2564%256d%2569%256e
在网址后加上?id=%2561%2564%256d%2569%256e便能得到结果。
6.提交语句cyberpeace{b805853be6334fa3e49c3b459fd5b205}
夺旗成功!
二、复盘积累
原理:简单的代码审计、php源代码文件
目的:GET行参数的请求和url编码知识以及服务器的初次解码知识、了解phps文件
技巧补充:通过扫描目录获得index.php存在,根据Can you anthenticate to this website?反复试探php后缀名,发现index.phps存在源代码,然后可以通过url二次加密构造payload为id=%2561%2564%256d%2569%256e