DVWA--SQL注入
SQL注入原理
就是通過sql命令插入到web表單遞交或輸入域名頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SDL命令。具體來說,它是利用現有應用程序,將惡意的SQL命令注入到后臺數據庫引擎執行的能力,它可以通過在WEB表單中輸入惡意SQL語句得到包含漏洞的網站數據庫,而不是按照設計者意圖去執行。
SQL注入類型
按照數據提交的方式:
GET注入、POST注入、COOKIE注入、HTTP頭部注入
按照注入點類型來分:
數據型注入點、字符型注入點、搜索性注入點
按照執行效果來分:
基于布爾的盲注、基于時間的盲注、基于報錯注入、聯合查詢注入、堆疊注入、寬字節注入
常用SQL語句
show databases;查看數據庫名
注:Information_schema:包含所有庫的所有數據,mysql5.0以上版本存在該數據庫
use emp(表名);使用某個表
show tables;查看表
desc emp(表名);查看表的結構
select * from emp;查詢所有列
select empmo,ename,mgr FROM emp;查詢指定項
select distinct from emp;只顯示結果不同的項
select * from emp where job=’clerk’ 查詢指定行
select * from emp where (sal>50 or job=’MANAGE’)and ename like ‘J%‘;聯合查詢
SQL注入流程
檢查是否存在SQL注入漏洞,注入的類型字符or數字(手工測試、掃描器)
猜解SQL查詢語句中的字段數
確定顯示位置
獲取當前數據庫
獲取數據庫中表,表中的字段名
下載數據
DVWA初級SQL注入
源碼如下
1、判斷SQL注入為字符型注入還是數字型注入
1’ and ‘1’=’1和1’ and ‘1’=’2如果回顯不同,那么就是字符型注入
1 and 1=1和1 and 1=2如果回顯不同,那么就是數字型注入
通過判斷證明為字符型注入
2、猜測SQL查詢語句中的字段數(這個主要是為了確定顯示的位置)
當輸入為3時出現如下界面:
說明只有兩個字段
確定顯示位置(有幾個字段就要寫幾個)
獲取當前數據庫及版本信息
獲取數據庫中表
獲取表中字段
查看具體字段的值
MD5解密
此時,顯示出所有用戶及MD5加密后出現的密碼,現在可以在網站上進行MD5爆破查詢:
https://www.somd5.com
DVWA中級SQL注入
源碼如下
防御手段:
1、無法輸入要查詢的內容,只能選擇1-5;
2、對單引號進行了過濾;
繞過手段:
1、可以抓包在Burp中修改數據包,將捕獲到的數據包轉到repeater模塊,以便重復修改;
2、進行16進制轉過濾;
1、判斷SQL注入為字符型注入還是數字型注入
1=1時沒有報錯,1=2回顯不同,通過判斷證明為數字型注入
2、猜測SQL查詢語句中的字段數(這個主要是為了確定顯示的位置)
當輸入為3時出現如下界面:
說明只有兩個字段
確定顯示位置(有幾個字段就要寫幾個)
獲取當前數據庫及版本信息
獲取數據庫中表
庫名可以用database()代替,也可轉為十六進制
獲取表中字段
1、首先對表名進行進制轉換(我用的小葵)
2、利用十六進制進行查詢
查看具體字段的值
MD5解密即可
DVWA高級SQL注入
源碼如下
防御手段:
1、添加了limit 1 做限制,說明掃出一個結果就不向下掃描了,只輸出一個結果;
繞過手段:
1、添加注釋(#,–+)
DVWA impossible SQL注入
源碼如下
防御手段:
可見該段代碼使用了PDO技術,將輸入與代碼分隔開,這樣便完全斷隔了sql注入攻擊;
嗯嗯~~就這么多了
總結
以上是生活随笔為你收集整理的DVWA--SQL注入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DVWA--文件上传漏洞
- 下一篇: 任意用户密码重置的10种姿势