sql注入判断数据库
SQL注入一般会在http://xxx.xxx.xxx/abc.asp?id=XX这样等带有参数的ASP动态网页中,有些动态网页中可能只有一个参数,有些可能有n个参数;有些参数是整型,有些参数是字符串型。只要是带有参数的动态网页访问了数据库就有可能存在SQL注入。
我们首选要修改浏览器的设置,以便更好的了解动态网页参数里包含的信息。以IE浏览器为例,把IE菜单-工具-Internet选项-高级-显示友好HTTP错误信息前面的勾去掉。
下面以http://xxx.xxx.xxx/abc.asp?p=YY为例进行分析,“YY”可能是整型,也有可能是字符串。
1、整型参数的判断
当输入的参数YY为整型时,通常abc.asp中SQL语句原貌大致如下:
select * from 表名 where 字段=YY,所以可以用以下步骤测试SQL注入是否存在。
(1)http://xxx.xxx.xxx/abc.asp?p=YY and 1=2, abc.asp运行异常;
(2)http://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了select * from 表名 where 字段=YY’,abc.asp运行异常;
(3)http://xxx.xxx.xxx/abc.asp?p=YY and 1=1, abc.asp运行正常,而且与http://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
如果这三个方面全部满足,abc.asp中一定存在SQL注入漏洞!
2、字符串型参数的判断
当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:
select * from 表名 where 字段=’YY’,所以可以用以下步骤测试SQL注入是否存在。
(1)http://xxx.xxx.xxx/abc.asp?p=YY&nb … 39;1’=’2′, abc.asp运行异常;
(2)http://xxx.xxx.xxx/abc.asp?p=YY&nb … 39;1’=’1′, abc.asp运行正常,而且与http://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
(3)http://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了select * from 表名 where 字段=YY’,abc.asp运行异常;
如果这三个方面全部满足,abc.asp中一定存在SQL注入漏洞!
3、字符被过滤的判断
有安全意识的ASP程序员会过滤掉单引号等字符,以防止SQL注入。这种情况可以用下面几种方法尝试。
(1)ASCII方法:所有的输入部分或全部字符的ASCII代码,如U = CRH(85),一个= CRH(97),等等。
(2)UNICODE方法:在IIS UNICODE字符集实现国际化,我们可以在输入字符串即输入UNICODE字符串。如+ = % 2 b,空格= % 20,等;
(1)混合设置方法:大小是大小写不敏感的,因为根据当时和过滤器的程序员通常要么过滤所有大写字母的字符串,或过滤所有小写的字符串,大小写混合往往会被忽略。如用SelecT代替select,SELECT等。
② 什么是sql注入测试
SQL注入测试是一种安全测试方法,用于检测Web应用程序中是否存在SQL注入漏洞。以下是关于SQL注入测试的详细解释:
1. 定义: SQL注入测试是通过在Web表单、URL参数或其他输入字段中插入恶意的SQL命令,以判断应用程序是否能够正确处理这些输入,并防止执行未经授权的数据库操作。
2. 目的: 主要目的是识别和利用应用程序中的SQL注入漏洞,这些漏洞可能导致未经授权的数据访问、数据篡改或数据泄露等安全问题。
3. 工作原理: 测试人员会在应用程序的输入字段中输入特制的SQL语句或命令片段,试图绕过应用程序的正常验证和过滤机制。 如果应用程序未能正确处理这些输入,并错误地将它们传递给数据库引擎执行,那么测试人员就能够利用这些漏洞执行恶意的SQL命令。
4. 潜在风险: SQL注入漏洞可能导致严重的安全问题,包括数据泄露、数据篡改、账户劫持等。 因此,及时发现和修复这些漏洞对于保护应用程序和数据的安全至关重要。
5. 防御措施: 为了防止SQL注入攻击,开发人员应采取一系列防御措施,如使用参数化查询、存储过程、ORM框架等,以确保输入数据被正确处理并防止恶意SQL命令的执行。 此外,定期进行安全测试和代码审查也是发现潜在漏洞并及时修复的重要手段。
综上所述,SQL注入测试是确保Web应用程序安全性的重要环节之一,通过及时发现和修复SQL注入漏洞,可以有效降低应用程序遭受攻击的风险。