前言
有了之前的PHP反序列化漏洞實例復現姿勢詳解這篇文章,終於不用再畏懼反序列化了,而且遇見這種題型甚至有一絲小興奮,畢竟可以檢驗這段時間的學習了!
分析
創建環境,訪問題目中給的url:
很明顯,這題就考了2個點:
`反序列化`
`魔術函數__wakeup()的繞過`
附:繞過__wakeup()的姿勢:
__wakeup 觸發於 unserilize() 調用之前, 當反序列化時的字符串所對應的對象的數目被修改, __wake 的函數就不會被調用. 並且不會重建爲對象
首先,我們構造111
的反序列化字符串
詳情請移步:PHP反序列化漏洞實例復現姿勢詳解
得到序列化後的字符串:
O:4"xctf":1:{s:4:"flag";s:3:"111"}
然後結合前文提到的繞過姿勢,將對象數目修改構造payload:
O:4"xctf":2:{s:4:"flag";s:3:"111"}
然後以get方式提交即可:
OK,成功得到了flag!
結語
但行好事,莫問前程.