《Metasploit滲透測試魔鬼訓練營》 之 SQL注入

SQL注入是WEB應用程序在利用用戶輸入構造SQL語句時,沒有對用戶輸入進行限制和過濾,導致執行額外的SQL語句查詢。

以下環境均爲mySQL數據庫

一、知識點

1、select * from ta where id=1 === select * from ta where id=’1’ ===  select * from ta where id=”1”(目前只測試idvarcharint的情況下)

2、select * from ta where age=’’’’,返回結果爲0‘’’’爲四個單引號)

3、select * from ta where id=''or 1=1 --sdf 與 select * from ta where id=''or 1=1 -- sdf不同,註釋內容需要在--之後有個空格

4、union連接的兩個SQL語句,查詢的列數和數據類型必須相同。可以將額外查詢的語句放在union語句後面

5、SELECT 2 , 4 FROM ta WHERE id =1,結果顯示(2, 4),個數爲滿足條件的個數

6、information_schemamysql數據庫默認數據庫,保存了MySQL服務器所有數據庫的信息。如數據庫名,數據庫的表,表欄的數據類型與訪問權限等。這臺MySQL服務器上,到底有哪些數據庫、各個數據庫有哪些表,每張表的字段類型是什麼,各個數據庫要什麼權限才能訪問,等等信息都保存在information_schema數據庫裏面。

(1)tables數據表中保存了TABLE_SCHEMA(數據庫名)TABLE_NAME(數據表名)

(2)Columns數據表中保存了TABLE_SCHEMA(數據庫名),TABLE_NAME(數據表名),COLUMN_NAME(列名),DATA_TYPE(數據類型)(注:有些數據庫用戶沒有權限訪問該數據表...

7、select password, concat(first_name, last_name, ‘user_name’) from...  Concat函數將三列變爲一列。

8、SELECT id, version() from ta 顯示數據庫版本,另外,database()當前查詢數據庫的名稱,user()顯示數據庫登陸用戶名,Loadfile(),讀取文件

二、過程

1、找到注入點

2、利用union select 1, 2,......找到查詢的列數

3、利用mysql數據庫中INFROMATION_SCHEMA系統表進行數據查詢

(1)union select 1, ..... table_name from INFORMATION_SCHEMA.tables 獲取所有表名(union select 1, ..... table_schema,table_name from INFORMATION_SCHEMA.tables獲取所有表以及表所屬的數據庫)   找到感興趣的數據庫和數據表

(2)Union select 1,....table_schema, table_name, column_name, data_type from INFORMATION_SCHEMA.tables where table_name=敢興趣的數據表,例如users數據表   找到感興趣的數據表的列名和數據類型

(3)Union select null, password from users 查詢感興趣的數據表中的數據

 

拜了個拜!

發佈了22 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章