PHP弱型別的學習

2021-10-09 23:12:03 字數 2178 閱讀 7273

下面為學習過程中搜查的內容:

總結:補充:md5碰撞

這兩個部落格很詳細,下面為學習過程中第乙個部落格搜查的內容

建議看完第乙個保留疑問然後再看第二個再做複習

1.$_get 變數

2.ctype_alpha

3.md5()函式

4.json_decode函式

5.intval()函式

6.array_search函式

7.strcmp()漏洞

同時也證明了get引數是通過url傳遞並且不太安全

我們可以通過在url後新增:?內容來提交get引數

如果在字串中,每個字元都是乙個字母,那麼就返回true,反之則返回false

根據true跟flase調整加密方式(針對字串)

可利用弱型別的特點進行繞過

附加上key,value,=>和->的解釋:

array(0=>1,1=>2,2=>3,3=>4)

那麼等號左邊的就是陣列的下標也叫索引也叫鍵(key),箭頭指向的便是陣列的值(value)。

->:

->是成員訪問符 =>是陣列的賦值符號

(物件導向的引用)

json繞後需要學習js跟物件導向(超綱了!)

先抽象學習,不糾牛角尖

用於base解碼

針對低版本的php

1.(1)= = = 在進行比較的時候,會先判斷兩種字串的型別是否相等,再比較

(2)== 在進行比較的時候,會先將字串型別轉化成相同,再比較

所以弱型別的利用需= =而不是===

2.字串的開始部分決定了它的值,如果該字串以合法的數值開始,則使用該數值,否則其值為0。

(1)字串開頭會被轉化為0

eg:「admin」==0

(2)合法數值開頭

eg:「1admin」==1

(3)可做運算

eg: $ test=1+「2admin」;//$test=3(int)

1.md5弱比較:(= =)

md5弱比較,為0e開頭的會被識別為科學記數法,

結果均為0

0e開頭的md5和原值:

s878926199a

0e545993274517709034328855841020

s155964671a

0e342768416822451524974117254469

s214587387a

0e848240448830537924465865611904

s214587387a

0e848240448830537924465865611904

s878926199a

0e545993274517709034328855841020

s1091221200a

0e940624217856561557816327384675

s1885207154a

0e509367213418206700842008763514

s1502113478a

0e861580163291561247404381396064

240610708

0e462097431906509019562988736854

2120624

0e85776838554cc1775842c212686416

payload:

param1=s878926199a¶m2=s155964671a
2.md5強比較:(= = =)

md5強比較,此時如果傳入的兩個引數不是字串,而是陣列,md5()函式無法解出其數值,而且不會報錯,就會得到===強比較的值相等

payload

param1[

]=1¶m2[

]=2

3.真實md5碰撞

待補充

php 弱型別總結

最近ctf比賽,不止一次的出了php弱型別的題目,藉此想總結一下關於php弱型別以及繞過方式 php中有兩種比較的符號 與 a b a b 在進行比較的時候,會先判斷兩種字串的型別是否相等,再比較 在進行比較的時候,會先將字串型別轉化成相同,再比較 如果比較乙個數字和字串或者比較涉及到數字內容的字串...

php 弱型別比較

php中 是弱等於,不會比較變數型別 是強等於,會先比較變數型別。0e 開頭跟數字的字串 例如 0e123 會當作科學計數法去比較,所以和0相等 0x 開頭跟數字的字串 例如 0x1e240 會被當作16進製制數去比較 布林值true和任意字串都弱相等。當比較的一方是字串時,會先把其轉換為數字,不能...

php 弱型別總結

0x01 前言 最近ctf比賽,不止一次的出了php弱型別的題目,藉此想總結一下關於php弱型別以及繞過方式 0x02 知識介紹 php中有兩種比較的符號 與 1 2 a b 3 a a a b 4 在進行比較的時候,會先判斷兩種字串的型別是否相等,再比較 在進行比較的時候,會先將字串型別轉化成相同...