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

相关推荐
\光辉岁月/3 分钟前
5.java-数组
java·开发语言
谢亮_vipxieliang19 分钟前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
郑州光合科技余经理41 分钟前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
2601_9620715742 分钟前
类变量和全局变量的生命周期有什么区别?
java·开发语言·jvm
code2cat1 小时前
Java进阶篇之AtomicReference:一次替换引用,读到一份完整状态
java·并发编程·不可变对象·atomicreference
专业程序开发源1 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
Wang's Blog1 小时前
Java 项目实战: 外卖平台优化-前后端分离开发模式与工程拆分
java·开发语言
HEJOO92 小时前
指针的算术运算详解
java·数据结构·算法
sunshine22 girl2 小时前
Java学习六 Java常见API-2--String-3-字符串的截取替换和其他方法
java·开发语言·学习
EatFan2 小时前
从“框架混战“到“运行时收敛“:2026 年 AI Agent 开发框架的三条路线之争
java·数据库·人工智能·多智能体·ai agent·mcp·agent 框架