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

相关推荐
用户8181870627462 小时前
第26章 Kafka vs RocketMQ vs RabbitMQ真实选型对比
java·后端
lv__pf2 小时前
09-深入理解AQS之独占锁ReentrantLock源码分析【TL 并发 09】
java·开发语言
letisgo52 小时前
JAVA 高级进阶18篇《生产级RAG:切分、检索、评估与Graph RAG全链路实战》
java·面试·检索增强·rag·graph rag
随遇而安zx2 小时前
【并发】---Disruptor 原理、源码与实战 深度解析
java·并发·disruptor
Lyyaoo.2 小时前
【二分查找】【困难】寻找两个有序数组的中位数
java·数据结构·算法
小羊没烦恼!2 小时前
Memory 记忆设计讨论:Agent Memory 的安全边界:权限、删除、版本与回执
java·大数据·word·powerpoint·.net
这是程序猿2 小时前
Java线程池深度剖析:源码原理、核心参数、任务调度与生产调优实战
java·开发语言·python
rannn_1112 小时前
【Java面试八股】Java基础篇|数据类型、面向对象、关键字、反射、注解、异常、新特性、序列化、设计模式、IO
java·后端·面试
MacroZheng2 小时前
阿里又开源了一个神级 Skill 项目!
java·人工智能·后端