0x00
題型:原始碼洩露,php反序列化,wakeup方法的繞過。
0x01
<?php
include 'class.php';
$select = $_get['select'];
$res=unserialize(@$select);
?>
<?php
include 'flag.php';
error_reporting(0);
class name
function __wakeup()
function __destruct()
if ($this->username === 'admin') else
}}?>
簡單明瞭,對傳入的select進行php反序列化,username===』admin'&&password==100時,就可以拿到flag。
0x02
payload:
?select=o:4:"name":3:
tip1:
為什麼要加上%00?
php對private屬性的變數序列化時,會在類名前後生成空字元,即0x00,看起來就像空格,實際上不是空格,複製到剪下板時會發現被截斷,因此加上%00,讓php能正常解析。
tip2:
name類只有兩個屬性,為什麼寫成3?
為了繞過_wakeup()這個魔術方法,反序列化時_wakeup()被自動呼叫,在這個類中wakeup()會改變我們傳入的引數,所以需要繞過。而當反序列化時,屬性個數與實際數目不符的情況下,這個方法是不會被呼叫的。
極客大挑戰 2019 PHP
開啟以後,是三個php原始碼,其中最重要的是class.php,如下 include flag.php error reporting 0 class name function wakeup function destruct if this username admin else 看了一下,這個...
極客大挑戰 2019 PHP
剛進入 我們可以看到這樣的乙個介面 根據內容提示,有備份 的習慣 日常後台掃瞄,發現有www.zip檔案,我們進行解壓得到 看到flag.php開啟檢視,發現沒有什麼有用的資訊。我們開啟index.php看看 我們可以看到通過get方式傳入引數select,並對引數select進行反序列化。接下來,...
極客大挑戰 2019 PHP
開啟後,按照提示找備份檔案 用御劍沒掃到東西,換個工具dirsearch 找到備份檔案 解壓檔案,檢視flag,假的。審計一下這幾個的 吧 flag.php裡的 flag 給了個值syc,好像沒啥用。外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img jirqepnc 1612329...