安全测试 - 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端)应统一接入登录

 

posted @ 2016-12-20 22:49  早晚聊出事儿  阅读(392)  评论(0编辑  收藏  举报