让我们总结与PHP(H-FILM)弱类型相关的知识。

前言
有八种类型的PHP
标量类型:整数类型,浮点类型浮点,字符串类型,布尔类型
复合类型:对象,数组数组
特殊类型:空空,资源
我们需要知道,PHP是一种弱的语言类型,它与C/GO/Java不同,等等。
因此,首先,让我们谈谈PHP中的两个比较符号。

在这里,我们需要解释==这里我们要确定双方的值是否相等。当相等符号的两侧都是相同的值时,我们直接确定值是否相等。如果类型不同,请首先转换为同一类型,然后判断转换值是否相等。
(如果将平等标志的两个侧面与字符串进行比较,则将字符串转换为数字值。将字符串转换为数字值非常有趣。您可以使用它来尝试不同类型的转换)
(例如,尝试更多地这样)

为什么第11行为是真的?这是PHP中的哈希缺陷。如果哈希值从0E开始,则在比较时将变为0倍10,结果仍然为0。
(PS:如果MD5操作是以0E开头的字符串,可以通过强制()转换后的MD5比较绕过它吗?)
提醒:0,“ 0”,null,false,array()都是空的。
===,是为了判断这些值是否不一致。不仅值相等,而且类型也必须保持一致。

在某些语言(例如GO)中,要比较的两个变量必须具有相同的类型,并且GO没有隐式类型的转换。要比较的两个变量必须具有相同的类型,并且任何类型的别名都无法正常工作。
在这里,我们可以从一个简单的问题开始(问题来自进攻和防御世界)。

() 功能
用于检测该变量是数字还是数字字符串(感觉就像没有新单词)。
然后是一个非常简单的弱类型比较。只是失去了符合两个逻辑的东西。
通过这些准备工作,我们可以以高级方式研究另一个问题(问题来自)。
通过第一级后,我们将看到此页面,并提示F12。
$a = $GET['a'];$b = $_GET['b'];if($a != $b && md5($a) == md5($b)){// wow, glzjin wants a girl friend.
知识补充
md5( string $str [, bool $raw_output = false ] ) : string
计算字符串的MD5哈希值。 MD5函数告诉我们,我们传递的参数应该是类型,但是如果我们通过数组中的数组,它不会报告错误,也不会解析其值,从而导致两个数组中的MD5相同(如果是相同的错误)。

然后,我们可以将两个阵列传递到绕过。
当您达到第三级时,它与第二级相似。
如果我们遇到铸型类型转换,例如参数传递参数在其之前具有()类型转换,我们该怎么办?那里需要MD5强碰撞(我记得我以前曾见过一个CISSP问题,这也解释了MD5的不安全感)。
我们大多数人可能需要使用该工具()
在谈论MD5之后,我们将使用另一个SHA(标题来自Bugku,Web29各种旁路)。

知识补充
sha1( string $str [, bool $raw_output = false ] ) : string
- - 计算字符串的sha1哈希值,并测试sha1()函数和md5()函数“与彼此相同”。

这里可以使用许多函数,例如(){通过JSON形式数据,class中的字典}。不可否认的是,绕过任何功能需要相关的逻辑判断。
{()以拾取格式将字符串解码为数组,我们可以使用相应的逻辑}绕过它

在下面,我们将介绍回荡弱类型的PHP函数。
功能问题
知识补充
在单个序列化变量上操作,并将其转换回PHP的值。

钥匙和值是我们可以通过帖子数据传递的值。我们将其传递到布尔值。该函数将其解析为数组。以下是因为==,根据PHP的弱类型,BOOL值等于任何字符串。
因此,可以判断可以输出它。
功能问题
知识补充
strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) : int
返回首先出现的数字位置。

该问题仍然发生在0 ==“ admin”的弱类型比较问题中。
PHP中的哲学问题

(代码中仍然有哲学问题吗?)

因为老师以前问我们这个问题,为什么?在模糊的句子中,“无限亲密是平等。”
()功能问题
知识补充
in_array( mixed $needle , array $haystack [, bool $strict = false ] ) : bool
- 检查数组中是否有一定值。如果第三个参数是默认的false,则使用松散的比较。

这是我们尝试比较的结果。
相关主题(PHP审核问题):

首先,我们发现()不使用第三个参数,因此它是默认值,可用于松散比较。我们只需要在范围(1,24)中以23a.php的范围前缀 *.php。
()问题
array_search ( mixed $needle , array $haystack [, bool $strict = false ] ) : mixed
- 搜索数组中的给定值,如果成功,它将返回第一个相应的密钥名称,类似于()函数。

()功能问题
知识补充
比较两个字符串(敏感)
strcmp(string1,string2)
返回值:
•0-如果两个字符串相等
•
•> 0-如果大于
测试缺陷的方法类似于MD5函数。我们不给出此功能类型,而是给它数组类型的值。

我发现它仍然发出警告,但仍被认为是整洁并打印出来的。 (标题来自南京邮政与电信网络进攻和防御培训平台 - 通过检查)
$pass=@$_POST['pass'];$pass1=***********;//被隐藏起来的密码if(isset($pass)){if(@!strcmp($pass,$pass1)){echo "flag:nctf{*}";}else{echo "the pass is wrong!";}}else{echo "please input pass!";}/*wp:$k[]=1;var_dump(!strcmp($k, "flag"));printf("\n");*/

相关问题
如果情况是数字类型判断。参数将转换为int类型。


不要惊慌,继续欢呼。
结尾
扫一扫在手机端查看
-
Tags : php弱类型比较符号_php弱类型比较(松散比较)
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1