当前位置:首页 » 编程语言 » sql混淆器
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql混淆器

发布时间: 2023-03-07 23:52:29

sql注入攻击与防范

关于SQL注入攻击与防范

随着网络的普及,关系数据库的广泛应用,网络安全越来越重要。下面是我为大家搜索整理了关于SQL注入攻击与防范,欢迎参考阅读,希望对大家有所帮助。想了解更多相关信息请持续关注我们应届毕业生培训网!

一、 SQL注入攻击

简言之,SQL注入是应用程序开发人员未预期地把SQL代码传入到应用程序的过程。它由于应用程序的糟糕设计而成为可能,并且只有那些直接使用用户提供的值构建SQL语句的应用程序才会受影响。

例如:用户输入客户ID后,GridView显示客户的全部行记录。在一个更加真实的案例中,用户还要输入密码之类的验证信息,或者根据前面的登录页面得到用户ID,可能还会有一些用户输入关键信息的文本框,如订单的日期范围或产品名称。问题在于命令是如何被执行的。在这个示例中,SQL语句通过字符串构造技术动态创建。文本框txtID的值被直接复制到字符串中。下面是代码:

在这个示例中,攻击者可以篡改SQL语句。通常,攻击的第一个目标是得到错误信息。如果错误没有被恰当处理,底层的信息就会暴露给攻击者。这些信息可用于进一步攻击。

例如,想象一下在文本一下在文本框中输入下面的字符串会发生什么?

ALFKI'OR '1'='1

再看看因此生成的完整SQL语句:

这条语句将返回所有的订单记录,即便那些订单不是由ALFDI创建,因为对每一行而言而有信1=1总是true。这样产生的后果是没有显示当前用户特定信息,却向攻击者显示了全部资料,如果屏幕上显示的是敏感信息,如社会保险号,生日或信用卡资料,就会带来严重的问题。事实上,这些简单的SQL注入往往是困扰那些大型电子商务公司的麻烦。一般而言,攻击点不在于文本框而在于查询字符串(可被用于向数据库传送值,如列表页向详细信息页面传送唯一标识符)。

还可以进行更复杂的攻击。例如,攻击者可以使用两个连接号(--)注释掉SQL语句的剩余部分。这样的攻击只限于SQL Server,不过对于其他类型的数据库也有等效的办法,如MySql使用(#)号,Oracle使用(;)号。另外攻击者还可以执行含有任意SQL语句的批处理命令。对于SQL Server提供程序,攻击者只需在新命令前加上分号(;)。攻击者可以采用这样的方式删除其他表的内容,甚至调用SQL Server的系统存储过程xp_cmdshell在命令执行任意的程序。

下面是攻击者在文本框中输入的,它的攻击目标是删除Customers表的全部行。

LUNCHUN’;DELETE*FROM Customers--

二、防范

如何预防SQL注入攻击呢?需要记住几点。首先,使用TextBox.MaxLength属性防止用户输入过长的字符是一个好办法。因为它们不够长,也就减少了贴入大量脚本的可能性。其次,要使用ASP.NET验证控件锁定错误的数据(如文本、空格、数值中的特殊字符)。另外,要限制错误信息给出的提示。捕获到数据库异常时,只显示一些通用的信息(如“数据源错误”)而不是显示Exception.Message属性中的信息,它可能暴露了系统攻击点。

更为重要的是,一定要小心去除特殊字符。比如,可以将单引号替换为两个单引号,这样它们就不会和SQL语句的分隔符混淆:

string ID=txtID.Text().Replace(“’”,”’’”);

当然,如果文本确实需要包含单引号,这样做就引入了其他麻烦。另外,某些SQL注入攻击还是可行的。替换单引号可以防止用户提前结束一个字符串,然而,如果动态构建含有数值的SQL语句,SQL注入攻击又有发挥的空间了。这个漏洞常被(这是很危险的)忽视。更好的解决办法是使用参数化的命令或使用存储过程执行转义以防止SQL注入攻击。

另一个好建议是限制用于访问数据库的账号的权限。这样该账号将没有权限访问其他数据库或执行扩展的存储过程。不过这样并不能解决SQL脚本注入的问题,因为用于连接数据库的进程几乎总是需要比任意单个用户更大的权限。通过限制权限,可以预防删除表的攻击,但不能阻止攻击者偷看别人的.信息

三、POST注入攻击

精明的用户可能会知道还有另外一个Web控件攻击的潜在途径。虽然参数化的命令防止了SQL注入攻击,但它们不能阻止攻击者向回发到服务器的数据添加恶意的值。如果不检查这些值,就使得攻击者可以提交本来不可能存在的控件值。

例如,假设你有一个显示当前用户订单的列表。狡诈的攻击者可能保存该页面的一个本地副本,修改HTML内容向列表添加更多的项目,然后选择某个“假”的项目。如果攻击成功,攻击者就能够看到其他用户订单,这显然是一个问题。幸好,ASP.NET使用一个很少被提及的叫做“事件验证”的特性来防止这种攻击。事件验证检查回发到服务器的数据并验证其中值的合法性。例如,如果回发的数据表明用户选择了一个没有意义的数据(因为它在控件中并不存在),ASP.NET就产生一个错误并停止处理。可以在Page指令中设置EnableEventValidation特性为false来禁用事件验证。创建使用客户端脚本动态改变内容的页面时,需要执行这一步。不过,此时在使用这些值之前要注意检查潜在的POST注入攻击。

;

② SQL注入哪些工具最有效

SQL Power Injector是一款在.Net 1.1中创建的应用程序,可帮助渗透测试人员在网页上查找和利用SQL注入。

特征

支持Windows,Unix和Linux操作系统

SQL Server,Oracle,MySQL,Sybase / Adaptive Server和DB2兼容

SSL支持

自动从网页上的表单或IFrame加载参数(GET或POST)

检测并浏览框架集

自动检测网站语言的选项

检测并添加加载页面进程期间使用的Cookie(Set-Cookie检测)

自动查找提交页面,其方法(GET或POST)以不同的颜色显示

可以直接在Datagrids中创建/修改/删除加载的字符串和Cookie参数

单个SQL注入

盲目的SQL注入

比较页面的真实和错误响应或cookie中的结果

时间延迟

SQL注入在自定义浏览器中的响应

可以使用HTML上下文颜色查看返回页面的HTML代码源并在其中搜索

微调参数和cookie注入

可以参数化预期结果的长度和计数以优化应用程序执行SQL注入所用的时间

创建/编辑预设的ASCII字符,以优化盲注SQL请求数/请求速度

多线程(最多可配置50个)

选项可以通过空的评论/ ** /针对IDS或过滤器检测来替换空间

在发送之前自动编码特殊字符

自动检测响应页面中的预定义SQL错误

在响应页面中自动检测预定义的单词或句子

实时结果

将会话保存并加载到XML文件中

自动查找正面答案和负面答案页面之间差异的功能

可以创建一个范围列表,它将替换隐藏的SQL注入字符串中的变量(>)并自动为您播放它们

使用文本文件中的预定义列表自动重播变量范围

Firefox插件,它将启动SQL Power Injector以及当前网页的所有信息及其会话上下文(参数和cookie)

两个集成工具:Hex和Char编码器和MS SQL @options解释器

可以编辑Referer

可以选择一个用户代理(或者甚至在用户代理XML文件中创建一个)

可以使用设置窗口配置应用程序

支持可配置的代理

软件截图

地址:http://www.sqlpowerinjector.com/index.htm

ilo--,Reversing.org - sqlbftools

地址:https://packetstormsecurity.com/files/download/43795/sqlbftools-1.2.tar.gz

Bernardo Damele AG:sqlmap,自动SQL注入工具

介绍

sqlmap是一款开源渗透测试工具,可自动检测和利用SQL注入漏洞并接管数据库服务器。它具有强大的检测引擎,针对终极渗透测试人员的众多特性,以及从数据库指纹识别,从数据库获取数据,到访问底层文件系统以及在操作系统上执行命令的各种开关,带外连接。

特征

完全支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase,SAP MaxDB,HSQLDB和Informix数据库管理系统。

完全支持六种SQL注入技术:基于布尔的盲,基于时间的盲,基于错误,基于UNION查询,堆栈查询和带外。

支持直接连接数据库而不通过SQL注入,通过提供DBMS凭证,IP地址,端口和数据库名称。

支持枚举用户,密码哈希,特权,角色,数据库,表和列。

自动识别密码哈希格式并支持使用基于字典的攻击对其进行破解。

支持完全转储数据库表,根据用户的选择提供一系列条目或特定列。用户也可以选择仅转储每列条目中的一系列字符。

支持搜索特定的数据库名称,跨所有数据库的特定表或所有数据库表的特定列。例如,这对于识别包含自定义应用程序凭证的表格非常有用,其中相关列的名称包含名称和传递等字符串。

当数据库软件是MySQL,PostgreSQL或Microsoft SQL Server时,支持从数据库服务器底层文件系统下载和上载任何文件。

当数据库软件是MySQL,PostgreSQL或Microsoft SQL Server时,支持执行任意命令并在数据库服务器底层操作系统上检索它们的标准输出。

支持在攻击者机器和数据库服务器底层操作系统之间建立带外状态TCP连接。该通道可以是交互式命令提示符,Meterpreter会话或图形用户界面(VNC)会话,可以根据用户的选择进行选择。

通过Metasploit的Meterpreter 命令支持数据库进程'用户权限升级

地址:http://sqlmap.org/

icesurfer:SQL Server接管工具 - sqlninja

介绍

喜欢从Microsoft SQL Server上的SQL注入到数据库上的完整GUI访问?采用一些新的SQL注入技巧,在注册表中添加几个远程镜头以禁用数据执行保护,混合一个自动生成调试脚本的小Perl,将所有这些放在一个带有Metasploit包装器的振动器中,只有sqlninja的攻击模块之一!

Sqlninja是一款旨在利用以Microsoft SQL Server作为后端的Web应用程序中的SQL注入漏洞的工具。

其主要目标是在易受攻击的数据库服务器上提供远程访问,即使在非常恶劣的环境中也是如此。渗透测试人员应该使用它来帮助和自动化发现SQL注入漏洞时接管数据库服务器的过程。

特征

完整的文档可以在tarball中找到,也可以在这里找到,但是这里列出了忍者的功能:

远程SQL Server的指纹(版本,执行查询的用户,用户权限,xp_cmdshell可用性,数据库身份验证模式)

数据提取,基于时间或通过DNS隧道

与Metasploit3集成,通过VNC服务器注入获得对远程数据库服务器的图形化访问,或者仅上传Meterpreter

通过vbscript或debug.exe仅上传可执行的HTTP请求(不需要FTP / TFTP)

直接和反向绑定,TCP和UDP

当没有可用于直接/反向外壳的TCP / UDP端口时,DNS隧道伪外壳,但数据库服务器可以解析外部主机名

ICMP隧道外壳,当没有TCP / UDP端口可用于直接/反向外壳,但数据库可以Ping您的盒子

蛮力的'sa'密码(2种口味:基于字典和增量)

如果找到'sa'密码,权限将升级到系统管理员组

创建自定义的xp_cmdshell,如果原始的已被删除

TCP / UDP端口可以从目标SQL Server扫描到攻击机器,以便找到目标网络防火墙允许的端口并将其用于反向shell

回避技术混淆了一些IDS / IPS / WAF

与churrasco.exe集成,通过令牌绑架将权限升级到w2k3上的SYSTEM

支持CVE-2010-0232,将sqlservr.exe的权限升级到SYSTEM

地址:https://sourceforge.net/projects/sqlninja/files/sqlninja/sqlninja-0.2.999-alpha1.tgz/download

③ sql server 2016怎么用

第一次用2016,安装后发现跟用过的2012不一样,找不到正确的姿势!!!就是原来2012安装后直接带的那个管理器SQL Server Management Studio
(SSMS),一度怀疑人生,以为安装出错了,最后度了一圈在一个博客角落里看到说2016的SSMS需要单独下载...那,然后就姿势正确了
http://jingyan..com/article/86112f139c3f0c27379787b0.html