BUGKU-WEB 矛盾

题目描述

在这里插入图片描述
进入场景看看:
在这里插入图片描述
代码如下:

$num=$_GET['num'];
if(!is_numeric($num))
{
   
echo $num;
if($num==1)
echo 'flag{**********}';
}

解题思路

  • 需要读懂一下这段PHP代码的意思
  • 明显是一道get相关的题目,需要提供一个num的参数,然后需要传入一个不是数字但等于1的值,也就是PHP的弱比较,见最后的//【新知识点】
  • 熟悉is_numeric函数:函数用于检测变量是否为数字或数字字符串。见最后的//【新知识点】

相关工具

解题步骤

  1. 解读代码的意思

定义一个num参数,
ps:【不是数字又要等于1,可真矛盾!】。

  1. 直接测试一下在1后面随便加一个不是数字的字符:
/?num=1</br>

在这里插入图片描述
得到了flag。

此外,还可以使用%00截断【新知识点】,来处理这个函数is_numeric():

/?num=1%00

在这里插入图片描述

得到Flag

flag{2cdfe6ebc7440d87eefc859989455fca}

在这里插入图片描述

新知识点

关于PHP is_numeric()函数:
bool is_numeric ( mixed $var )
如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE。

弱比较(相等比较符==):只要求比较的两个值在转换类型后相等即可。如果两个值的类型不同,会尝试将其中一个值转换为另一个值的类型。

将字符串转换成数字的机制如下:

1==“1admin” //true

1==“admin”  //false

1==“admin1” //false

所以,本题中直接在数字后面加上字母就会被转换成数字。

在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-16 05:30:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-16 05:30:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-16 05:30:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-16 05:30:02       18 阅读

热门阅读

  1. LeetCode115. Distinct Subsequences——动态规划

    2024-02-16 05:30:02       28 阅读
  2. 数据结构与算法--PTA第七章习题

    2024-02-16 05:30:02       30 阅读
  3. 回归预测模型:机器学习回归模型

    2024-02-16 05:30:02       26 阅读
  4. C++ for循环:求任意整数的因数

    2024-02-16 05:30:02       27 阅读
  5. 23种设计模式概述

    2024-02-16 05:30:02       31 阅读
  6. KY155 To Fill or Not to Fill

    2024-02-16 05:30:02       37 阅读
  7. 第10讲投票创建页面实现

    2024-02-16 05:30:02       25 阅读
  8. AtCoder Beginner Contest 338(A~E补题)

    2024-02-16 05:30:02       32 阅读
  9. B2092 开关灯

    2024-02-16 05:30:02       32 阅读