当前位置: 首页 > article >正文

攻防世界 php2

你能验证这个网站吗?

根据提示是PHP,我们知道PHP代码在服务器端执行,可以连接数据库,查询数据,并根据查询结果动态生成网页内容。

PHP代码通常是保存在以.PHP为扩展名的文件上,这些文件存储在web 服务器的文档根目录中,以便通过浏览器访问和执行;尝试查看一下示例文件名:index.php 可以正常运行

尝试其他经典的文件名时不太行

这个脚本文件是在服务器上运行的,不是在客户端浏览器上,我们想看的是脚本源代码,而不是解析的效果,php文件源代码通常在phps文件,尝试访问一下index.phps

代码审计:

if("admin"===$_GET[id]) {
  echo("<p>not allowed!</p>");
  exit();
}//这行代码检查 $_GET['id'] 是否直接等于字符串 "admin"。如果是,将输出一条消息并终止脚本执行。

$_GET[id] = urldecode($_GET[id]);
//使用 urldecode() 函数解码 $_GET['id'] 的值

关键: 在解码之后再次检查 $_GET['id'] 是否等于字符串 "admin",如果等于将输出访问权限和密钥

if($_GET[id] == "admin")
echo "<p>Access granted!</p>";
echo "<p>Key: xxxxxxx </p>";
//在解码之后再次检查 $_GET['id'] 是否等于字符串 "admin",如果等于将输出访问权限和密钥

所以我们可以进行编码制造payload:

因为是使用 urldecode() 函数解码经过url编码的函数

所以对admin进行url编码:%61%64%6d%69%6e

又因为编码后参数%61dmin中存在特殊字符%,浏览器会自动进行URL解码,所以我们对%进行编码:%25

最终id==%2561%64%6d%69%6e

本来是全部编码的,但是一解析以后就又变成了只编码a了,不管是只编码a还是全部编码都能得到flag


http://www.kler.cn/a/530468.html

相关文章:

  • 优选算法的灵动之章:双指针专题(一)
  • 深度学习-98-大语言模型LLM之基于langchain的代理create_react_agent工具
  • 【实战篇】Android安卓本地离线实现视频检测人脸
  • 《AI大模型开发笔记》DeepSeek技术创新点
  • [ESP32:Vscode+PlatformIO]新建工程 常用配置与设置
  • python学习——函数的返回值
  • 物业综合管理系统助力社区服务创新提升管理效率与住户体验
  • Hive 整合 Spark 全教程 (Hive on Spark)
  • [SAP ABAP] Debug Skill
  • JavaScript面向对象编程:Prototype与Class的对比详解
  • 【最后203篇系列】004 -Smarklink
  • 蓝桥杯C语言程序设计赛备赛指南
  • 2025年2月2日(tcp3次握手4次挥手)
  • 【UE】 APlayerState
  • elasticsearch8.15 高可用集群搭建(含认证Kibana)
  • 代码讲解系列-CV(一)——CV基础框架
  • 如何运行Composer安装PHP包 安装JWT库
  • 面试题整理:Java多线程(二)多线程、死锁、乐观锁悲观锁、线程池
  • 002 mapper代理开发方式-xml方式
  • ArkTS渲染控制
  • 31不同整数的技术问题-青训营刷题
  • LeetCode 404.左叶子之和
  • MySQL 进阶专题:笛卡尔积内连接外连接详解(JOIN ON/ OUTER JOIN)
  • C++进阶: 红黑树及map与set封装
  • 智慧物业管理系统实现社区管理智能化提升居民生活体验与满意度
  • 垃圾回收之弱引用+实例说明+weakSet+weakMap