青少年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做

相关推荐
Flynn Liang13 小时前
Agentic 工作流:子代理、Supervisor 与人工介入
java·langchain·多智能体·supervisor·agentic·langchain4j
xys_67813 小时前
JavaSE通关手册:运算符
java·java-ee
jyOverQ14 小时前
从零学 JVM(七):垃圾收集器详解——Serial、ParNew、Parallel、CMS 与 G1
java·jvm
liangbo714 小时前
Spring系列11:切点表达式
java·spring
30955666614 小时前
股票接口返回 404 与空数组的排查笔记:证书状态与级别参数
java·笔记·python·ios·iphone·股票数据api·股票数据接口
nice_lcj52014 小时前
MySQL 存储引擎入门:InnoDB 和 MyISAM 到底怎么选
java·数据库·mysql·面试·innodb·存储引擎·myisam
文丑颜不良啊15 小时前
LeetCode2861~2880题目解析
java·leetcode
装不满的克莱因瓶15 小时前
设计模式之策略模式核心概念和应用场景
java·后端·设计模式·架构·系统架构·策略模式
晴天的雨.99215 小时前
【C++】继承篇
java·开发语言·c++
SomeOtherTime15 小时前
第 1 讲:内存布局与所有权解剖——栈帧、胖指针与“移动/拷贝”在汇编层面的真实面目
java·开发语言·汇编