天天看點

ctf php 讀取flag,BugkuCTF flag.php(反序列化)

ctf php 讀取flag,BugkuCTF flag.php(反序列化)

進去後是個登入頁面,但是login根本不會跳轉,看源碼也沒提示,但是這道題給了一個提示:hint,那麼盲猜應該是一個get參數,因為post不能跳轉,那麼get總有内容吧,跟上hint參數,随便賦一個值。

ctf php 讀取flag,BugkuCTF flag.php(反序列化)

發現報出了源碼

審計一波發現隻要cookie的值等于$key變量的序列化字元就能輸出flag。

那麼發現之前沒有給$key定義指派,但是最下面出現了,我們先在本機上檢視這種情況下的$key變量的序列化值

ctf php 讀取flag,BugkuCTF flag.php(反序列化)

發現這種情況下的序列化值是這樣的,那麼我們直接不定義$key變量,也不指派,看看

ctf php 讀取flag,BugkuCTF flag.php(反序列化)

同樣也是這個:s:0:"";  上面定義了cookie的參數為ISecer,那麼直接cookie的值應該為:ISecer:s:0:"";

在火狐的hackbar裡面傳上這個cookie值就行了,但是最後“;”在cookie中是不會上傳到伺服器的,是以這裡“;”要用url編碼一下,即:ISecer:s:0:""%3b

ctf php 讀取flag,BugkuCTF flag.php(反序列化)

最後輸出flag。

這道題主要考的是反序列化unserialize()函數,就是将序列化的字元轉換為正常字元串,他對應的序列化函數是serialize(),将字元串序列化。