青少年ctf url

接收 POST 提交的 url 参数,连续四层校验,全部通过后,由服务器后端主动访问该 url;服务器读取 url 返回内容等于pentest,就输出 flag。

第 1 层:判断是否传入 POST 参数 url

第 2 层:校验 URL 整体格式合法性

第 3 层:解析 URL,校验 Host 主

  1. parse_url($url):PHP 内置函数,拆分 URL 字符串,提取 scheme 协议、host 主机、user 用户名、port 端口、path 路径等信息,存入数组$r
  2. print_r($r):打印拆分后的数组,也就是页面上看到的Array([scheme] => http, [host]=>getflag.com...),属于调试输出,用来让我们看到解析结果。
  3. preg_match('/getflag\.com$/', $r['host']) 正则匹配
  4. \.转义字符,代表普通小数点.
  5. $:正则锚点,代表字符串末尾
  6. 含义:parse_url提取出来的 host,结尾必须是 getflag.com

第 4 层:服务器发起请求,校验返回内容(拿到 flag 的最终关卡)

Payload: url=data://getflag.com/plain,pentest 原理:

  1. parse_url 解析该 url,host 为getflag.com,满足/getflag\.com$/正则;
  2. PHP 中data://伪协议,file_get_contents会以第一个逗号分割,逗号后的内容作为返回文本;
  3. 读取结果为pentest,满足file_get_contents($url)=='pentest',拿到 flag。

用hackbar做

相关推荐
_Evan_Yao8 小时前
Redis 缓存穿透、击穿、雪崩,一次讲清!
java·spring·mybatis
梓豪csd8 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
秋饼8 小时前
Spring AI 2.1 Message Parts 深度实战:推理签名回放与跨轮记忆持久化的源码级落地
java·ai·技术分享·后端开发
thefool1122669 小时前
TCP 1
java·1024程序员节
金銀銅鐵11 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
AI人工智能+电脑小能手11 小时前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务
paopaokaka_luck13 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
2301_322414280413 小时前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
考虑考虑14 小时前
JDK26的JEP 500属性
java·后端·java ee
LMT流氓兔14 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节