console.log(欢迎来到nyyydddn|

nyyyddddn

园龄:4年粉丝:9关注:12

php弱类型

php弱类型:

=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较值是否相等
== 在进行比较的时候,会先将字符串类型转化成相同,再比较值
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行

$a="123";@$b=123;
ab; TRUE
a
=b; FALSE
0' '; TRUE
'1111'
TRUE; TRUE
'0''false'; false
'0'
false;true
0x01=1; FLASE
0x01=TRUE; TRUE
[0]=[NULL]; TRUE

NULL=FALSE; TRUE
0e123465==0e5555555; TRUE (0e绕过)

案例1 md5弱比较

方法1 0e绕过(0e 科学计数法)
方法2 md5处理数组的时候会返回null的值,可以传递两个数组进去使得null==null
<?php
ini_set("display_error",false);
error_reporting(0);
if($_POST['param1']!=$_POST['param2']&&md5($_POST["param1"])==md5($_POST['param2']))
{
	die("success");
}
else
{
	echo "fail";
}

?>
param1=QNKCDZO&param2=240610708 //0e绕过 success

案例2 sha1弱类型

方法1 0e绕过(0e 科学计数法)
方法2 sha1处理数组的时候会返回null的值,可以传递两个数组进去使得null==null
<?php
ini_set("display_error",false);
error_reporting(0);
$flag ="flag";

if(isset($_GET['name']) && isset($_GET['password']))
{
	if($_GET['name'] == $_GET['password'] )
		echo '<p>Your password can not be your name</p>';
	else if (sha1($_GET['name']) === sha1($_GET['password']))
		die('FLAG:'.flag);
	else 
		echo '<p>Invalid password.</p>';
}
else
{
	echo "<p>Login first!</p>";
}
?>
?name[]=1&password[]=2 //md5和sha1无法处理数组传入会返回NULL NULL

案例3 json相关

==号在比较字符串和数字的时候会将字符串转换成数字再进行比较
"1234abcd" == 1234 true
"123abc" == 123 true
"abcd" == 0 true
字符串连续前几位是数字的话就会取这几位为转换的结果
<?php
ini_set("display_error",false);
error_reporting(0);
$flag ="flag";
$key = "adminasdasdasd";
if(isset($_GET['message']))
{
	$message = json_decode($_GET['message']);
	if($message->key ==$key)
	{
		echo flag;
	}
	else
	{
		echo "fail";
	}
}
else
{
	echo "------";
}
?>
?message={"key":0} //"adminasdasdasd"字符串和数字进行比较的时候会转换成数字
//"adminasdasdasd"转换成数字为0

案例4 switch

switch在比较的时候会将字符串转换成数字,转换方法参考上面
<?php
highlight_file(__FILE__);
$i ="3name";
switch ($i){
	case 0:
	case 1:
	case 2:
		echo "this is two";
		break;
	case 3:
		echo "flag";
break;
}
?>
//echo flag switch case数字的时候强制把"3name"转换成数字进行比较,字符串开头包括什么数字就会转换成什么数字

案例5 strcmp

strcmp(string1,string2)	strcmp将string1和string2转换为ascii码相减 若返回0,代表两个字符串相等 ;若返回<0 ,代表string1 小于 string2;若返回>0,代表string1 大于 string2
strcmp在比较字符串和数组的时候会返回0
<?php

highlight_file(__FILE__);
include "flag.php";
$password="asdasdad";
if (isset($POST['password'])){
    if (strcmp($_POST['password'],$password)==0) {
        echo "Right!!!login success";
        echo $flag;
        exit;
    }
    else{
        echo "Wrong password..";
    }
}
?>
password[]=1

案例6 in_array

<?php

highlight_file(__FILE__);
$array = [0, 1, 2, '3'];
var_dump(in_array('abc', $array));
var_dump(in_array('1bc', $array));
var_dump(in_array(3, $array));

?>
 运行结果bool(true) bool(true) bool(true) 
<?php
highlight_file(__FILE__);
$array = [0, 1, 2, '3'];
var_dump(array_search('abc', $array));
var_dump(array_search('1bc', $array));
var_dump(array_search(3, $array));
var_dump(array_search('3', $array));
?>
 int(0) int(1) int(3) int(3)  

变量覆盖extract

extract(); 将输入内容导入符号表,会存在变量覆盖
<?php
highlight_file(__FILE__);
include "flag.php";
extract($_GET);
if (isset($gift)){
	$content = trim(file_get_contents($flag));
		if ($gift == $content) {
		echo $flag;
	}
}
else{
	echo 'oh..';
}
?>
?gift=&content=

本文作者:nyyyddddn

本文链接:https://www.cnblogs.com/nyyyddddn/p/17447774.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   nyyyddddn  阅读(45)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found Reol
  2. 2 No title Reol
  3. 3 平面鏡 Reol
  4. 4 アスノヨゾラ哨戒班 Reol
  5. 5 Fallen EGOIST
No title - Reol
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

ずっと夢見てた僕になれたかな

とうに帰れないとこまで来たみたい

自分の足で二段飛ばしてそうもっと

先へ駆けていけるはずだから ran away

深くなる傷を縫い付け

繋ぐパス軸に廻りだす

慣れた痛み、焦る呼吸とビート

気付かないふりしてまた一人

何が正当?ないな永劫

誰が間違った対価払うの

あんたが嫌いなあいつはきっとただ

「それだけ」で不正解なんだ

0点だって提言したって全然納得できない理由も

最前線はいつだってここだった

最善策は最初からなかった

緩やかに崩れ壊れてく

ゆるりゆるり首を絞めるように

昨日までの僕が殺されていく

緩やかに離れ離れ飽く

ぐらりんり君にきこえるのは

僕が知らない声になってく

幼い頃から

幼い頃から

気付いたら傍にいた

まるで空気のようだ

僕は君とぎゅっと手を繋いで

楽しいことも涙も

僕は君に話して聞かせた

僕を笑う人や貶す声が聞こえぬように君は歌った

この声を君が受信

また夜毎投影されてく憂い

使い捨てだっていって腐っても

止まらないハイファイ、ツァイトガイスト

一周巡る間のたった一瞬だけでも交わる鼓動、音、繋ぐ色

次は僕が君に歌歌うから

緩やかに崩れ壊れてく

ゆるりゆるり首を絞めるように

昨日までの僕が殺されていく

緩やかに離れ離れ飽く

ぐらりんり君にきこえるのは

僕が知らない声になってく

緩やかに崩れ壊れてく

ゆるりゆるり首を絞めるように

昨日までの僕が殺されていく

緩やかに離れ離れ飽く

ぐらりんり君にきこえるのは

僕が知らない声になってく

いつか君に届くかな

いやそんな日はきっと来ないだろうな

声も体も持たぬ君に

救われた何億人の一人

赤青合わせ彩った音で世界が溢れた

巡り巡り出会ったこの音を聴くすべてが

緩やかに崩れ壊れてく

ゆるりゆるり首を絞めるように

昨日までの僕が殺されていく

緩やかに離れ離れ飽く

ぐらりんり君にきこえるのは

僕が知らない声になってく

緩やかに崩れ壊れてく

ゆるりゆるり首を絞めるように

昨日までの僕が殺されていく

緩やかに離れ離れ飽く

ぐらりんり君にきこえるのは

僕が知らない声になってく