PHP文件上傳利用的常見函數(shù)總結(jié)大全_第1頁
PHP文件上傳利用的常見函數(shù)總結(jié)大全_第2頁
PHP文件上傳利用的常見函數(shù)總結(jié)大全_第3頁
PHP文件上傳利用的常見函數(shù)總結(jié)大全_第4頁
PHP文件上傳利用的常見函數(shù)總結(jié)大全_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第PHP文件上傳利用的常見函數(shù)總結(jié)大全目錄前言1.deldot2.in_val4.strrchr5.strtolower6.strrpos7.str_ireplace8.strstr9.substr10.trim附PHP文件上傳處理參考資料總結(jié)

前言

收集了幾個在文件上傳利用中常見的函數(shù)。

對這些函數(shù)的深入理解應該有助于文件上傳利用的順利進行。

1.deldot

deldot函數(shù)為upload-lab中一個常見的函數(shù),它實際為一個自定義函數(shù),定義于common.php中,函數(shù)定義如下:

functiondeldot($s){

for($i=strlen($s)-1;$i$i--){

$c=substr($s,$i,1);

if($i==strlen($s)-1and$c!='.'){

return$s;

if($c!='.'){

returnsubstr($s,0,$i+1);

即從字符串的尾部開始,從后向前刪除點.,直到該字符串的末尾字符不是.為止。

因此對于如下輸入,

echodeldot("helloworld")."\n";

echodeldot("helloworld.")."\n";

echodeldot("helloworld....")."\n";

echodeldot("hello.world.")."\n";

輸出為

helloworld

helloworld

helloworld

hello.world

2.in_array

in_array(mixed$needle,array$haystack,bool$strict=false):bool

其中第一個參數(shù)$needle為待搜索的值,$haystack為被搜索的數(shù)組,第三個參數(shù)決定是否進行類型比較。

第三個類型默認為false,即不考慮類型是否相同。

對于如下輸入:

if(in_array("AAA",$arr,false))echo1;

if(in_array("aaa",$arr,false))echo2;

if(in_array("AAA",$arr,true))echo3;

if(in_array("aaa",$arr,true))echo4;

輸出

13

3.intval

intval(mixed$value,int$base=10):int

intval函數(shù)用于獲取變量的整數(shù)值。

第一個參數(shù)$value為要獲取整數(shù)值的變量,可以為字符串、數(shù)值和數(shù)組。

第二個參數(shù)$base指定了轉(zhuǎn)換所使用的進制,當且僅當要轉(zhuǎn)換的變量為字符串時有效。

當?shù)诙€參數(shù)為0時,會檢測變量的格式來決定使用的轉(zhuǎn)換進制。

當存在前置的0x或0X時,使用16進制。當存在前置的0時,使用8進制。否則使用10進制。

intval函數(shù)返回的數(shù)值為一個int類型的數(shù)值。當轉(zhuǎn)換不成功時,返回0。

特別要注意,使用該函數(shù)返回的值有上限。當轉(zhuǎn)換的數(shù)值大于php的整數(shù)范圍時,返回的結(jié)果為整型數(shù)值的取值上限。

echointval("111");

echo"\n";

echointval("111a");

echo"\n";

echointval("0x333");

echo"\n";

echointval("888",8);

echo"\n";

echointval("122",3);

echo"\n";

echointval("11111111111111111111111111111111111");

echo"\n";

echointval("2222222222222222222222222222222");

輸出為

111

111

0

0

17

9223372036854775807

9223372036854775807

4.strrchr

strrchr(string$haystack,mixed$needle):string

strrchr函數(shù)在字符串$haystack中查找$needle,并將最后一次查找到的$needle及其后面的字符串返回。如果沒有在該字符串中查找到$needle,則返回false。

注:

如果第二個參數(shù)不是不是單個字符,則只使用該字符串的第一個字符進行查找匹配。如果第二個參數(shù)是一個數(shù)值,則將該數(shù)值轉(zhuǎn)換為對應的ASCII碼進行匹配。

$S="hhhahahaha2333";

echostrrchr($S,'h')."\n";

echostrrchr($S,'hwweraer')."\n";

echostrrchr($S,104)."\n";

if(strrchr($S,'k')==false)echo"false";

ha2333

ha2333

ha2333

false

5.strtolower

strtolower(string$string):string

將字符串$string中的各個英文字符轉(zhuǎn)換為小寫并返回。

$S="HaHaHaHa,Hello!!";

echostrtolower($S);

hahahaha,hello!!

6.strrpos

strrpos(string$haystack,string$needle,int$offset=0):int

返回字符$needle最后一次出現(xiàn)的位置。

在php4中,$needle只能為單個字符。如果$needle中存在多個字符,僅使用第一個字符做匹配。

和strrchr相似,如果$needle是一個數(shù)值,則使用該數(shù)值對應的ASCII碼字符進行匹配。

從php5開始,$needle可以為多個字符。

從php5開始,strrpos新增一個參數(shù)$offset,可以指定從$haystack的哪兒位置開始進行匹配。

返回匹配的下標位置,沒有匹配到時返回false。

注意:

因為返回值可能為零,所以在判斷返回值是否為false的時候必須使用全等于符號===。該函數(shù)區(qū)分大小寫。與該函數(shù)相似的函數(shù)有:stripos:查找首個出現(xiàn)的位置,不區(qū)分大小寫。strpos:查找首個出現(xiàn)的位置,區(qū)分大小寫。strripos:查找最后一個出現(xiàn)的位置,不區(qū)分大小寫。即出現(xiàn)i則為不區(qū)分大小寫,出現(xiàn)rr則為查找最后一個。

$s="Phpphphpphpp";

echostrrpos($s,"php");

echostrrpos($s,"h");

echostrrpos($s,"P");

if(strrpos($s,"PHP")===false)echo"Noexist";

輸出:

890Noexist

注:測試使用的PHP版本為5.3.3。

在PHP4中結(jié)果可能不一樣。

7.str_ireplace

str_ireplace(

mixed$search,

mixed$replace,

mixed$subject,

int$count=

):mixed

str_ireplace函數(shù)用于對數(shù)組中的元素或字符串中的子串進行替換。

第一個參數(shù)$search為需要替換的內(nèi)容(子串或數(shù)組),第二個參數(shù)$replace為替換成的內(nèi)容(字符串或數(shù)組),第三個參數(shù)$subject為被替換的字符串。

如果$search和$replace都為字符串,那么將會把$subject中匹配的子串$search替換為$replace。如果$search和$replace都為數(shù)組時,將會進行映射替換。如果$replace的值的個數(shù)少于search的個數(shù),多余的替換將使用空字符串來進行。如果$search為數(shù)組而$replace為字符串,則對于$subject中出現(xiàn)的每一個search的元素,都會使用$replace做替換。

$count可以用于限定替換次數(shù)。

注:

替換從左到右進行。該函數(shù)替換不區(qū)分字母大小寫。(另外一個函數(shù)str_replace區(qū)分大小寫)

php

echostr_ireplace("php","","hello.php")."\n";

echostr_ireplace("pHP","","hello.Php")."\n";

echostr_ireplace("php","","hello.phPHpp")."\n";

echostr_ireplace("php","p","hello.phphp")."\n";

echostr_ireplace("php",""."phpphpphpphpphp.php",3)."\n";

echostr_ireplace(array("php","html"),"","hello.php.html")."\n";

echostr_ireplace(array("php","html"),array("1","2"),"hello.php.html")."\n";

echostr_ireplace(array("php","html","css"),array("1","2"),"hello.php.css.html")."\n";

echostr_ireplace(array("php","html","css"),"1","hello.php.css.html")."\n";

foreach(str_ireplace(array("php","html","css"),array("1","2","3"),array("hello.html","hello.css","hello.html"))as$it){

echo"$it";

hello.

hello.

hello.Hpp

hello.php

3

hello

hello.1.2

hello.12

hello.1.1.1

hello.2hello.3hello.2

8.strstr

strstr(string$haystack,mixed$needle,bool$before_needle=false):string

查找字符串$needle在$haystack中首次出現(xiàn)的位置,并將$needle及其之后的字符串返回。

PHP5起新增第三個參數(shù)$before_needle,如果$before_needle取值為true,則返回$needle前面的部分。

$s="123phpphp.php";

echostrstr($s,"php")."\n";

echostrstr($s,"php",true)."\n";

phpphp.php

123

9.substr

substr(string$string,int$offset,int$length=null):string

返回字符串$string中的子串。

$offset指定子串首個字符在$string中的下標位置,$length指定截取的子串長度。

$length的取值:

$length為默認取值時,函數(shù)會將$offset至$length的字符串截取并返回。$length取正數(shù)時,會從$offset開始將最多$length個字符截取返回出來。$length取0時,返回一個空字符串。$length取負數(shù)時,會將$offset至字符串$string倒數(shù)第$length前的字符返回出來。

$s="123456789";

echosubstr($s,1,3)."\n";

echosubstr($s,1,-1)."\n";

echosubstr($s,1)."\n";

echosubstr($s,1,0)."\n";

234

2345678

23456789

10.trim

trim(string$str,string$character_mask=\t\n\r\0\x0B):string

去除字符串$str的首尾的空白字符。

當?shù)诙€參數(shù)保持默認時,去除的字符為:

空格\t制表符\n換行符\r回車符\0空字節(jié)符\x0B垂直制表符

$s="\n123456789\t\n123456789\r";

echotrim($s);

123456789

123456789

附PHP文件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論