我们已经准备好了,你呢?

2026我们与您携手共赢,为您的企业形象保驾护航!

让我们总结与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类型。

图片

图片

不要惊慌,继续欢呼。

结尾

二维码
扫一扫在手机端查看

本文链接:https://www.by928.com/9033.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线