题目:

查看网页源代码:(ctrl+U或F12)
发现最后出现一段被注释的php代码:

代码拆解解析
1. 核心参数接收:$cat = $_GET['cat'];
$_GET:PHP 内置的「超全局数组」,专门用来接收通过 URL 传参 提交的数据(传参格式是URL?参数名=参数值,比如xxx.php?cat=dog)。['cat']:数组的「键名」,对应 URL 中参数的名称(这里就是cat参数),意思是 “从 URL 传参里取出名为cat的值”。$cat:自定义的 PHP 变量,用来存储从 URL 中获取到的cat参数值(变量名前必须加$,这是 PHP 语法要求)。- 整体作用:把 URL 中
cat参数的值,赋值给变量$cat,方便后续使用。
2. 输出参数值:echo $cat;
echo:PHP 中最常用的「输出语句」,作用是把后面的内容(字符串、变量等)输出到页面(最终会变成 HTML 响应的一部分)。$cat:就是上面接收的参数变量,这里直接输出它的值。
3. 条件判断:if($cat == 'dog'){ ... }
if(...):PHP 的「条件判断语句」,括号里是 “判断条件”,如果条件成立(结果为true),就执行大括号{}里的代码;如果不成立(结果为false),就跳过大括号里的代码。$cat == 'dog':判断条件(==是「等于比较运算符」,用来判断左右两边的值是否相等):- 左边:变量
$cat的值(URL 传过来的参数); - 右边:字符串
'dog'(固定值,用单引号包裹表示字符串类型); - 整体意思:“判断 URL 传过来的
cat参数值,是否等于字符串dog”。
- 左边:变量
- 大括号
{ echo 'Syc{cat_cat_cat_cat}'; }:条件成立时执行的代码:- 还是
echo输出语句,输出固定字符串'Syc{cat_cat_cat_cat}'
- 还是
因此,我们只需要在网页的url后面添加/?cat=dog来触发这段php代码

得到flag.
这段php代码明明被注释掉了,为什么 还能触发呢?
很多人以为 <!-- --> 会屏蔽 PHP 代码,但实际是:
- PHP 是服务器端脚本:服务器处理
.php文件时,会先扫描所有<?php ?>标签,优先执行里面的代码,完全忽略外面的 HTML 注释(<!-- -->是给浏览器看的,服务器根本不识别)。 - HTML 注释的作用:只是让 PHP 的执行结果被浏览器隐藏(不显示在页面上),但 PHP 代码本身已经在服务器端执行完了!
补充知识点:
1.Payload(有效载荷)
定义:在网络安全、编程或数据传输场景中,指传输数据中 “有实际意义的部分”(即除去协议头、校验等辅助信息后,真正要传递或执行的内容)
sql注入中的注入语句就是pyload.
2.URL(统一资源定位符)
定义:是互联网上定位资源的 “地址”,用于明确告诉浏览器或客户端 “去哪里获取资源”
结构(以https://www.example.com/index.php?cat=dog为例):
https:协议(传输数据的规则,常见还有http、ftp等);
www.example.com:域名(资源所在的服务器地址);
index.php:资源路径(要访问的文件)
?cat=dog:查询参数(向资源传递的额外信息,如前面 PHP 代码中$_GET接收的参数)。
3.PHP(超文本预处理器)
定义:是一门服务器端脚本语言,专门用于开发动态网页(在服务器上执行,把结果生成 HTML 返回给浏览器)。
PHP 基于 C 语言开发:PHP 的底层内核是用C 语言编写的,这让 PHP 具备了高性能和接近底层的执行能力。
更多CTF与实战攻防工具参见:
5204

被折叠的 条评论
为什么被折叠?



