BUU WEB 極客大挑戰 2019 PHP

2021-10-17 14:47:41 字數 980 閱讀 5333

審計完成後,大概是在index.php中包含class.php檔案,然後get方式傳入乙個select引數,並且將結果反序列化,class.php中如果username=admin,password=100然後我們再執行__destruct()時可以獲得flag。

構造反序列化(複製大佬的指令碼):

<?php 

class

name}$a

=new

name

('admin'

,100);

var_dump

(serialize($a

));?>

執行結果:

將結果儲存:

o:4:"name":2:
將這個結果傳給select,這時候問題來了,在反序列化的時候會首先執行__wakeup()魔術方法,但是這個方法會把我們的username重新賦值,所以我們要考慮的就是怎麼跳過__wakeup(),而去執行__destruct在反序列化時,當前屬性個數大於實際屬性個數時,就會跳過__wakeup(),去執行__destruct,構造payload,將屬性個數改為3:

?select=o:4:"name":3:
然後我們就會發現實際的字串長度和他說明的不相符,意識到,這個變數為私有變數,只在所宣告的類中可見,在該類的子類和該類的物件例項中均不可見。因此私有變數的變數名在序列化時,類名和變數名前面都會加上「\0」的字首。字串長度也包括所加字首的長度,再次構造payload:

?select=o:4:"name":3:
得到flag:

極客大挑戰 2019 PHP

開啟以後,是三個php原始碼,其中最重要的是class.php,如下 include flag.php error reporting 0 class name function wakeup function destruct if this username admin else 看了一下,這個...

極客大挑戰 2019 HardSQL wp

有過濾,抓個包fuzz一下 等號,空格等被過濾 發現可以用報錯注入,空格可以用括號代替 查表名username admin or extractvalue 1,concat 0x7e,select group concat column name from information schema.co...

極客大挑戰 2019 PHP

剛進入 我們可以看到這樣的乙個介面 根據內容提示,有備份 的習慣 日常後台掃瞄,發現有www.zip檔案,我們進行解壓得到 看到flag.php開啟檢視,發現沒有什麼有用的資訊。我們開啟index.php看看 我們可以看到通過get方式傳入引數select,並對引數select進行反序列化。接下來,...