下面為學習過程中搜查的內容:
總結:補充: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 在進行比較的時候,會先判斷兩種字串的型別是否相等,再比較 在進行比較的時候,會先將字串型別轉化成相同...