+ 收藏我们

网站模板

网站模板搜索
404模板 营销型模板 外贸网站模板 单页模板 双语模板 标签大全
电话:18630701785
首页 > 站长学院 > php特性靶场 >

php特性靶场

时间:2024-07-08 10:12:17
分析这段代码
 
它通过检查 GET 请求中的参数 num 是否只包含非数字字符来决定是否输出 flag 变量的值。以下是详细的解释:
 
首先,代码通过 include("flag.php") 引入了一个外部 PHP 文件 flag.php。这个文件应该包含了变量 flag 的定义。
 
然后,使用 highlight_file(__FILE__) 函数将当前 PHP 文件的内容以高亮的形式输出,这通常用于调试目的,方便查看代码结构。
 
接下来,代码通过 if (isset($_GET['num'])) 检查是否存在名为 num 的 GET 参数。如果存在,则将该参数的值赋给变量 $num。
 
然后,通过正则表达式 preg_match("/[0-9]/", $num) 检查 $num 是否只包含数字。如果 $num 只包含数字,则执行 die("no no no!") 函数,输出 "no no no!" 并终止脚本的执行。这是为了防止直接访问和输出 flag 变量的值。
 
如果 $num 不只包含数字,即通过了数字验证,代码会进一步检查是否能够将 $num 转换为整数。如果可以转换(即 $num 是一个整数),则执行 echo $flag; 语句,输出 flag 变量的值。
 
综上所述,这段代码通过限制对 flag 变量的访问来提供一种基本的安全机制,只有当 GET 请求中的参数 num 不只包含数字时才允许访问该变量。这样可以防止未经授权的访问和潜在的安全风险。
 
解法:
 
输入num,以数组方式,避开检查
 
 
 
解出flag
 
2.web90
 
 
分析代码:
 
首先,通过 include("flag.php") 引入了一个名为 flag.php 的文件。这个文件应该包含了变量 flag 的定义。
 
然后,使用 highlight_file(__FILE__) 函数将当前 PHP 文件的内容以高亮的形式输出,这通常用于调试目的,方便查看代码结构。
 
接下来,检查是否存在名为 num 的 GET 参数。如果存在,则将该参数的值赋给变量 $num。
 
然后,通过条件判断 if ($num === "4476") 检查 $num 是否等于字符串 "4476"。如果是,执行 die("no no no!") 函数,输出 "no no no!" 并终止脚本的执行。
 
如果 $num 不等于 "4476",则进一步使用条件判断 if (intval($num, 0) === 4476) 检查 $num 是否等于整数 4476。如果是,则输出变量 flag 的值。
 
如果 $num 不等于整数 4476,则执行 echo intval($num, 0),输出 $num 的整数值。
 
解法:
 
将4476转换进制:
 
 
 
整形常量通常用十进制、八进制、十六进制,而十进制不可使用,所以可以输入:
 
?num=010574
 
 
?num=0x117c
 

有问题可以加入网站技术QQ群一起交流学习

本站会员学习、解决问题QQ群(691961965)

客服微信号:lpf010888

Title