黑马模板网专注企业网站模板制作,包括企业pbootcms网站模板,静态网页模板,网站源码下载,HTML网站模板等等。
免责声明:本站所有资源(模板、图片)搜集整理于互联网或者网友提供,仅供学习与交流使用,如果不小心侵犯到你的权益,请及时联系我们删除该资源。
分析这段代码
它通过检查 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