sql注入——顯錯注入

 

mysql注入——顯錯注入

一,sql注入的本質
注入攻擊的本質是:把用戶輸入的數據看成代碼執行。
注入的兩個關鍵條件:
1,用戶能控制輸入。
2,本來程序要執行的代碼,拼接了用戶輸入的數據。
sql注入就是在自帶的系統數據庫中查詢庫,表,字段,內容的過程
mysql內置自帶庫版本>=5
msyql庫 保存帳戶信息,權限信息,存儲過程,event,時區等信息
sys庫包含了一系列存儲過程,自定義函數以及視圖來幫助咱們快速瞭解系統的元數據信息
performance_schema庫用於收集數據庫服務器的性能參數
information_schema庫存儲了關於mysql服務器維護的全部其餘數據庫的信息,如數據庫,表,表的數據類型與訪問權限等。
查詢數據庫名稱語句
select schema_name from information_schema.schemata
在這裏插入圖片描述
查表
select table_name from information_schema.tables where table_name=庫名
在這裏插入圖片描述
查列
select column_name from information_schema.columns where table_name=表名
在這裏插入圖片描述
查數據
select 列名 from 庫名.表名
在這裏插入圖片描述
二,sql注入類型歸納
按照注入點類型來分類
(1)數字型注入點php

在 Web 端大概是 http://xxx.com/news.php?id=1 這種形式,其注入點 id 類型爲數字,因此叫數字型注入點。這一類的 SQL 語句原型大概爲 select * from 表名 where id=1。組合出來的sql注入語句爲:select * from news where id=1 and 1=1mysql

(2)字符型注入點sql

在 Web 端大概是 http://xxx.com/news.php?name=admin 這種形式,其注入點 name 類型爲字符類型,因此叫字符型注入點。這一類的 SQL 語句原型大概爲 select * from 表名 where name=‘admin’。注意多了引號。組合出來的sql注入語句爲:select * from news where chr=‘admin’ and 1=1 ’ ’數據庫

閉合單引號chr=‘admin’ union select 1,2,3,4 and ‘1’='1 ====> chr=‘admin’(閉合前面單引號) union select 1,2,3,4 and ‘1’=‘1’服務器

(3)搜索型注入點函數

這是一類特殊的注入類型。這類注入主要是指在進行數據搜索時沒過濾搜索參數,通常在連接地址中有「keyword=關鍵字」,有的不顯示在的連接地址裏面,而是直接經過搜索框表單提交。此類注入點提交的 SQL 語句,其原形大體爲:select * from 表名 where 字段 like ‘%關鍵字%’。性能

組合出來的sql注入語句爲:select * from news where search like ‘%測試 %’ and ‘%1%’=’%1%’測試

測試%’ union select 1,2,3,4 and ‘%’=’
三,sql注入基本流程
1,判斷是否存在注入點
and 1=1 頁面返回正常
and 1=2 頁面返回不正常
URL後加單引號’ 「 --+頁面返回不正常
or sleep(5)頁面5秒鐘後正常顯示
2,猜解字段數
利用order by 排序
order by 1 以第一個字段排序
select * from users order by 1;
在這裏插入圖片描述
第一個字段爲id order by 1 就以第一個id字段來排序id從小到大排序
order by 2 以第二個字段排序
在這裏插入圖片描述
第二個字段爲username字段內容爲字符串
就以字符串開頭的26字母排序
當咱們輸入order by 4時在這裏插入圖片描述
發現沒有第四個字段那麼數據表內就只有三個字段

3,聯合查詢尋找輸出點
union select 1,2,3,4#
tips:union select 聯合查詢前面語句要爲假
在這裏插入圖片描述
找到網站的輸出點
在咱們語句2的位置輸入要查詢數據的語句
union select 1,database(),3,4#
在這裏插入圖片描述
數據庫名就顯示出來了
4,mysql的函數及用法
在這裏插入圖片描述
在這裏插入圖片描述
sql注入測試中經常使用函數
group_concat()返回屬於一組的列值鏈接組合而成的結果
在這裏插入圖片描述
ascii() 返回字符串的ASCII值
在這裏插入圖片描述
database() 返回當前數據庫名
在這裏插入圖片描述
user() 或者 system_user()返回當前數據庫登錄用戶名
在這裏插入圖片描述
在這裏插入圖片描述
version()返回msyql數據庫版本
在這裏插入圖片描述
sleep(n) 讓數據庫運行n秒後返回結果
在這裏插入圖片描述
在這裏插入圖片描述
@@dataidir 返回數據庫安裝絕對路徑
在這裏插入圖片描述
@@basedir返回數據庫數據存儲絕對路徑
在這裏插入圖片描述網站

相關文章
相關標籤/搜索