发布网友 发布时间:2024-10-03 02:25
共1个回答
热心网友 时间:2024-10-13 21:41
SQL注入攻击通常通过看似正常的Web访问进行,可能不会引起防火墙警报。其手法灵活,需要分析构造SQL语句。在常见网站中,ASP结合Access或SQLServer的组合较为普遍。攻击者会通过识别注入位置、判断数据库类型(如ACCESS和SQL-SERVER)、检查可执行权限等步骤进行攻击。
判断SQL注入主要通过测试参数类型(整型和字符串)的异常行为。如果程序员未对输入进行适当过滤,就可能存在漏洞。应对策略包括大小写混合法、UNICODE法和ASCII码法,例如利用SQL-SERVER系统变量(如user、db_name)来获取用户和数据库名,通过`p=YY and user>0`或`p=YY&n=db_name()>0`进行判断。
ACCESS和SQL-SERVER的系统表存在差异,如ACCESS的msysobjects与SQL-SERVER的sysobjects,通过计数(如`count(*)`)可以区分。MSSQL的关键系统表包括sysdatabases(存储数据库名和ID)、sysobjects(存储对象信息)和syscolumns(存储字段信息)。
确定是否具有XP_CMDSHELL执行权限,如SA权限,可以执行操作系统命令。攻击者可能会利用这些漏洞获取对系统的控制权限,例如通过HTTP地址操作系统帐户,如`HTTP://xxx.xxx.xxx/abc.asp?p=YY`,增加用户或赋予管理员权限。
在ASP动态网页中,要特别警惕SQL注入风险,包括猜解系统目录、利用ASP木马执行远程命令,以及通过ASCII码解码猜测敏感信息。同时,了解和限制SQL-SERVER的内置存储过程(如xp_regread, xp_servicecontrol等)的使用,以防止恶意操作。
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。 但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候 ,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提 交一段数据库查询代码,根 据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即 SQL注入。