一靶场 11_0_hello_php_codePHP 基础入门1. 题目分析访问靶场地址后页面直接显示 PHP 源码核心代码如下php运行?php highlight_file(__FILE__); system(cat /flag); ?highlight_file(__FILE__)PHP 函数作用是高亮显示当前文件的源码system(cat /flag)PHP 函数作用是执行系统命令cat /flag读取服务器上的 flag 文件并输出2. 解题过程直接在浏览器访问靶场入口http://180.76.235.121:33336页面执行 PHP 代码先显示源码再执行system()命令直接输出 flag 内容复制 flag提交到平台完成通关3. 知识点总结这是 PHP 入门级靶场核心是理解 PHP 代码的执行逻辑服务器解析 PHP 代码按顺序执行函数最终返回结果给浏览器system()是危险的命令执行函数若被恶意利用会导致服务器被入侵是 Web 安全中需要重点防护的风险点二靶场 21_1_get_codeGET 请求基础1. 题目分析访问靶场后页面显示 PHP 源码核心逻辑php运行?php highlight_file(__FILE__); if($_GET[name] hello){ system(cat /flag); }else{ echo 请用GET方式传递name参数值为hello; } ?代码逻辑判断 GET 请求的name参数是否严格等于hello若是则执行cat /flag输出 flag否则输出提示语考点GET 请求的参数构造与传参2. 解题过程方法 1浏览器直接构造 GET 请求最简单在浏览器地址栏输入构造好的请求plaintexthttp://180.76.235.121:33339?namehello原理GET 请求的参数拼接在 URL 的?后格式为参数名参数值多个参数用分隔回车访问页面校验namehello通过执行system()命令输出 flag复制 flag 提交通关方法 2curl 命令行适合终端环境打开 PowerShell执行命令powershellcurl http://180.76.235.121:33339?namehello命令执行后直接返回包含 flag 的页面内容提取 flag 即可3. 知识点总结GET 请求的参数会明文显示在 URL 中可直接在浏览器地址栏构造适合传递非敏感数据PHP 中$_GET[参数名]用于获取 GET 请求的参数是严格相等运算符要求参数值和类型完全匹配无法用弱类型绕过三靶场 31_getGET 表单提交1. 题目分析访问靶场后页面显示一个未完成的登录表单提示语你知道 get 表单是怎么提交的吗html 代码是怎么写的怎么把表单中的内容传送给 php 代码这个网站还没完全开发完登录按钮还没写好但你可以通过发包的方式先测试下登录功能页面包含两个输入框用户名、密码后端 PHP 逻辑为php运行?php highlight_file(__FILE__); if($_GET[username] admin $_GET[password] 123456){ system(cat /flag); }else{ echo 登录失败请检查GET参数; } ?考点GET 表单的 HTML 写法、手动构造 GET 请求发包2. 解题过程方法 1手动构造 GET 请求最快在浏览器地址栏输入plaintexthttp://180.76.235.121:33340?usernameadminpassword123456原理用分隔两个 GET 参数username和password传递给后端 PHP回车访问参数校验通过输出 flag提交通关四靶场 42_getGET 请求进阶1. 题目分析访问靶场后页面显示 PHP 源码核心逻辑php运行?php highlight_file(__FILE__); $a $_GET[a]; $b $_GET[b]; if($a ! $b md5($a) md5($b)){ system(cat /flag); }else{ echo a和b不满足条件; } ?代码逻辑要求两个 GET 参数a和b值不相等$a ! $b但 MD5 哈希值相等md5($a) md5($b)考点MD5 碰撞、PHP 弱类型绕过、GET 参数构造2. 解题过程利用 PHP MD5 碰撞漏洞找到两个不同的字符串其 MD5 值以0e开头PHP 会将0e开头的字符串解析为数字0从而实现弱类型相等常用碰撞字符串as155964644bs155964645或aQNKCDZOb240610708构造 GET 请求在浏览器地址栏输入plaintexthttp://180.76.235.121:33341?aQNKCDZOb240610708回车访问PHP 校验$a ! $b两个字符串不同且md5($a) md5($b)两个 MD5 值均为0e开头弱类型相等条件满足执行cat /flag输出 flag复制 flag 提交通关3. 知识点总结PHP 的弱类型特性会自动转换类型会严格校验类型和值MD5 哈希以0e开头时PHP 会将其解析为数字0从而实现0 0的绕过这是 Web 安全中经典的 MD5 碰撞漏洞常用于绕过登录校验、权限验证等场景GET 请求可传递任意参数即使后端代码有校验也可通过构造特殊参数绕过四、GET 与 POST 请求核心区别对比表格特性GET 请求POST 请求参数位置URL 中?后明文可见请求体中URL 不可见数据长度有上限约 2KB无上限安全性低参数暴露在 URL / 浏览器历史高适合传递密码等敏感数据PHP 获取方式$_GET[key]$_POST[key]浏览器触发直接访问 URL 即可需通过表单 / 工具构造请求适用场景搜索、分页、非敏感数据传递登录、文件上传、敏感数据传递