ctf的php,CTF中常見的PHP知識點

2021-10-25 20:38:09 字數 1727 閱讀 5919

php是一門比較鬆散的語言,既方便,又容易出現一些問題。本文主要概括一些常見的php弱型別,正規表示式函式跟變數覆蓋的內容,在ctf這方面也經常出現在**審計相關的題目中。

一、弱型別

0x01 "=="與"==="的區別

在使用"=="時會自動轉換型別,而"==="則是校驗型別,而非轉換。

1 == '1'; //true

1 == '1abcdef'; //true

0 == 'abcdefg'; //true

0 === 'abcdefg'; //false

0x02 hash比較

使用"=="時,如果字串滿足0e\d+,解析為科學計數法,否則視為正常字串。

"0e132456789" == "0e7124511451155" //true

"0e123456abc" == "0e1dddada" //false

"0e1abc"=="0" //true

md5('240610708') == md5('qnkcdzo') //true

0e開頭的md5:

qnkcdzo

0e830400451993494058024219903391

s878926199a

0e545993274517709034328855841020

s155964671a

0e342768416822451524974117254469

s214587387a

0e848240448830537924465865611904

s214587387a

0e848240448830537924465865611904

s878926199a

0e545993274517709034328855841020

s1091221200a

0e940624217856561557816327384675

s1885207154a

0e509367213418206700842008763514

0x03 傳入陣列返回null系列

md5()是不能處理陣列的,md5(陣列)會返回null,同理的有sha1(),strlen(),eregx()。

$array1 = array(

"foo" => "bar",

"bar" => "foo",

$array2 = array("foo", "bar", "hello", "world");

var_dump(md5($array1)==var_dump($array2)); //true

0x04 十六進製制轉換

使用"=="時,php會將十六進製制轉換為十進位制然後再進行比較

"0x1e240"=="123456" //true

"0x1e240"==123456 //true

"0x1e240"=="1e240" //false

0x05 intval()函式

intval()函式會將從字串的開始進行轉換直到遇到乙個非數字的字元。

如果出現無法轉換的字串,intval()不會報錯而是返回0。

if(intval($a)>1000)

if (isset($_post['message'])) else else';

0x04 unset()

unset($bar); 用來銷毀指定的變數,如果變數 $bar 包含在請求引數中,

可能出現銷毀一些變數而實現程式邏輯繞過。

oracle常見單詞 Oracle中常見的英語單詞

fatal 重要的,致命的。常見於 root dido1 ps ef grep init.cssd root 2918 1 0 09 59 00 00 00 bin sh etc init.d init.cssd fatal dependencies 附屬的 diagnostic 診斷 常見於 ro...

linux中常見的訊號

sighup 終止程序 終端線路結束通話 sigint 終止程序 中斷程序 sigquit 建立core檔案終止程序,並且生成core檔案 sigill 建立core檔案 非法指令 sigtrap 建立core檔案 跟蹤自陷 sigbus 建立core檔案 匯流排錯誤 sigsegv 建立core檔...

jquery mobile 中常見的問題

基礎篇 1 jquery mobile 只會從載入的文件中取出第乙個頁面 第乙個帶role page 的div 其他內容都將被忽略。即所有目標文件的head元素中的資訊以及其他在首個頁面元素之外的內容都被忽略。2 為避免dom占用過多記憶體,當外部載入頁面變得不可見時 再後退或前進到乙個新頁面後 j...