打開是一小段php的代碼:
考點是php的弱口令比較,分析一下:
掌握php弱類型比較 php中其中兩種比較符號: ==:先將字符串類型轉化成相同,再比較 ===:先判斷兩種字符串的類型是否相等,再比較 字符串和數字比較使用==時,字符串會先轉換為數字類型再比較 var_dump('a' == 0);//true,此時a字符串類型轉化成數字,因為a字符串開頭中沒有找到數字,所以轉換為0 var_dump('123a' == 123);//true,這里'123a'會被轉換為123 var_dump('a123' == 123);//false,因為php中有這樣一個規定:字符串的開始部分決定了它的值,如果該字符串以合法的數字開始,則使用該數字至和它連續的最后一個數字結束,否則其比較時整體值為0。 舉例: var_dump('123a1' == 123);//true var_dump('1233a' == 123);//false
<、>、<=、>=都存在和==相同的弱類型
<?php show_source(__FILE__); include("config.php"); $a=@$_GET['a']; $b=@$_GET['b']; if($a==0 and $a){ echo $flag1; } if(is_numeric($b)){ exit(); } if($b>1234){ echo $flag2; } ?>
(1)這里包含了config.php
(2)url接收參數a和b的值
(3)如果$a等於0 and $a,輸出$flag1
(4)如果$b是數字或者字符串那么退出當前腳本
(5)如果$b>1234,輸出$flag2
if(true and true){ //這里$a==0 and $a,==為弱類型比較,字符串開頭都為0,所以0==0 and 'b',因為字符串c存在,所以and后面也為true,所以雙true,最后if括號里為true,執行if下面的語句
echo $flag1;
}
if(is_numeric(2222a)){
exit();
}
if(2222a>1234){
echo $flag2;