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

[Zer0pts2020]Can you guess it?

https://buuoj.cn/challenges#[Zer0pts2020]Can%20you%20guess%20it?https://buuoj.cn/challenges#[Zer0pts2020]Can%20you%20guess%20it?启动靶机

点击链接,出现源码

<?php
include 'config.php'; // FLAG is defined in config.phpif (preg_match('/config\.php\/*$/i', $_SERVER['PHP_SELF'])) {exit("I don't know what you are thinking, but I won't let you read it :)");
}if (isset($_GET['source'])) {highlight_file(basename($_SERVER['PHP_SELF']));exit();
}$secret = bin2hex(random_bytes(64));
if (isset($_POST['guess'])) {$guess = (string) $_POST['guess'];if (hash_equals($secret, $guess)) {$message = 'Congratulations! The flag is: ' . FLAG;} else {$message = 'Wrong.';}
}
?>

提示我们flag在config.php 里面。并且对我们输入的网址进行正则匹配,如果以 config.php  或 config.php/ 结尾,不区分大小写,就返回“不知道你在想啥,不想让你读”。

然后再传递参数  source  ,就能读取我们再网址内输入页面的源码(这里没有其他要求,可为空)

总的来说,就是绕过 waf ,读取 config.php的内容 。

先试试在地址栏输入  /index.php/config.php   回显表明确实是被过滤了

试试   /index.php/config.php/A?source     (尝试了空格 单字符 tab键 数字  空字符  test  这些都不行 )

那试一试  非法utf-8字符  比如 %80

成功获得flag。

说明一下:

  • $_SERVER['PHP_SELF']=/index.php/config.php/%80  进行正则表达式的比较,由于这里的结尾处是 %80 不等于 config.php 或 config.php/   从而实现绕过waf。
  • basename($_SERVER['PHP_SELF'])  这个函数意为:获取路径中的最后一部分。也就是  %80,但由于文件系统不认识这个字符,会认为是乱码,就会回退到上一层,也就是config.php  
  • 像这样的字符有许多,  0x80~0xFF  都可以
  • 所以 highlight_file(basename($_SERVER['PHP_SELF'])) 实际上变成了 highlight_file(config.php)  实现读取flag

http://www.dtcms.com/a/486043.html

相关文章:

  • Go 通道非阻塞发送:优雅地处理“通道已满”的场景
  • 设计模式【工厂模式和策略模式】
  • 【Go】P6 Golang 基础:流程控制
  • Perl 基础语法
  • 酒店网站模板网站开发好的语言
  • C++入门——多态
  • 用数据绘图(1):用 Highcharts 打造你的数据艺术世界
  • Hadoop面试题及详细答案 110题 (96-105)-- Hadoop性能优化
  • 监控系统理论与实践:从认知到Zabbix入门
  • ROS 传感器模块的通用架构设计与跨中间件扩展实践
  • 措美网站建设游戏网站开发名字
  • openwrt 环境安装
  • iis 发布网站内部服务器错误东莞沙田门户网站建设
  • 订单 API 接口调试常见问题排查:3 类高频问题 + 落地解决方案
  • JavaWeb--使用JDBC操作数据库(一)
  • 【Web开发】待办事项列表
  • Linux IIO研究(二)
  • 浙江建设厅网站那三类人员爱给网官网免费素材
  • Spring Boot整合Apache Shiro权限认证框架(实战篇)
  • Rust 错误处理
  • 【在 Windows 上运行 Apache Hadoop 或 Spark/GeoTrellis 涉及 HDFS 】
  • Linux操作系统-命令行参数及环境变量
  • 系统架构设计师备考第40天——软件可靠性基础
  • RAG 问题处理系统架构解析:企业级智能问答QuestionsProcessor.py的工程实现
  • LlamaIndex多模态RAG开发实现详解
  • springboot实现微信小程序支付(服务商和普通商户模式)
  • 石景山网站建设好的公司有特色的企业网站
  • 个人建网站怎么赚钱网站一般用什么数据库
  • 【机器学习03】学习率与特征工程、多项式回归、逻辑回归
  • PyTorch解析使用张量与动态计算图实现深度学习模型的高效训练