XCTF Web_php_unserialize


一.根據題目猜測和反序列化漏洞有關

  1.思路:

  進入實驗環境后,發現是一段php代碼,通過接受get請求方式將提交過來的var的值,

  先進行base64解碼,再進行正則的判斷,如果不匹配成功就會反序列化輸入的參數值。

  所以這里我們目的就是為了繞過正則表達式,讓其反序列化出我們要的fl4g.php,再通過析構函數,高亮出fl4g文件中的內容。

  2.步驟:

  通過代碼中的注釋我們發現flag在fl4g.php這個文件里面,所以我們要將其序列化

  

 

   編寫一段代碼先實例化我們要序列化的類,這里吧fl4g.php傳進去,然后通過構造方法將其賦值給$file,

  然后我們輸出序列化的結果,這里為了繞過正則可以采用將    :4:   替換為 :+4:,

  在 PHP5 < 5.6.25, PHP7 < 7.0.10 的版本存在wakeup的漏洞。當反序列化中object的個數和之前的個數不等時,wakeup就會被繞過。

  所以我再將它的   :1:   替換為一個大點的值  比如  :2:    ,

  因為在接受到var值后會對其base64解碼,所以這里我們再將其base64編碼,然后輸出即得到我們要輸入的參數值。

  TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==  ,得到flag。

  **這里我們要注意:這里的file變量私有變量(protected變量應該也會),所以序列化之后字符串開頭各有一個空白字符%00

  字符串長度實際長度2如果序列化復制到base64網站進行編碼可能就會丟掉空白字符,從而得到錯誤的編碼值

  如下圖,通過strlen求到序列化的長度為48,但實際我數了一下只有46。

  

 

 

  

 

 

 

 

 

  

 

 

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM