安全测试 - SQL注入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全测试 - SQL注入相关的知识,希望对你有一定的参考价值。

1. 工具测试:

使用SQLMAP进行扫描

 

2. 手工测试:

观察参数的值value是否为数字型。如果是数字型进行数字型测试,否则跳到第4步进行字符型测试(例如如果出现a那说明是字符型,如果出现2则将其当做数字型测试)

将被测参数后加上测试语句“and 1=1”,即:地址栏中填入“http://www.exmaple.com/page.xxx?name=value and 1=1”, 如果返回正确页面则进行下一步操作,否则跳到第4步。

将被测参数后加上测试语句“and 1=2”(这里以第n个参数为例),其他参数保持不变,即:地址栏中填入“http://www.exmaple.com/page.xxx? name=value and 1=2”, 如果返回正确页面则进行下一步操作,否则该参数存在注入漏洞,完成测试

将被测参数后加上测试语句“’ and ‘1’=’1”,即:地址栏中填入“http://www.exmaple.com/page.xxx? name=value’ and ‘1’=’1”, 如果返回正确页面则进行下一步操作,否则该参数存在注入漏洞,完成测试

将被测参数后加上测试语句“’ and ‘1’=’2”,即:地址栏中填入“http://www.exmaple.com/page.xxx? name=value’ and ‘1’=’2”, 如果返回正确页面则不存在漏洞,否则该参数存在注入漏洞,完成测试

 

 

执行命令:

Sqlmap –r sql1.txt –threads 10 

 

http://blog.csdn.net/zgyulongfei/article/details/41017493/

 

mysql5系列以上的有一个特性,information schema的表 

Sqlmap –r sql1.txt –threads 10 --dbs

–current-db : 获取当前数据库

–current-user:获取当前用户

 

解决方案: 

     Ⅰ、限制数据库访问权限(必须)

     Ⅱ、使用预处理执行SQL语句,对所有传入SQL语句中的变量,做绑定。这样,用户拼接进来的变量,无论内容是什么,都会被当做替代符号“?”所替代的值,数据库也不会把恶意用户拼接进来的数据,当做部分SQL语句去解析。

 涉及用户的系统(web、app、m端)应统一接入登录

 

以上是关于安全测试 - SQL注入的主要内容,如果未能解决你的问题,请参考以下文章

数据库软件安全测试之SQL注入

数据库软件安全测试之SQL注入

安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段

安全测试 - SQL注入

如何安全地进行SQL注入测试

[安全测试入门]详解SQL注入式攻击