sql注入漏洞测试指南

2019-01-19 13:55

sql注入漏洞测试指南

一、 sql注入的定义

一般是指在存在SQL注入漏洞的web应用上,攻击者将恶意构造的SQL语句通过web应用的输入点注入到后端数据库中执行,以达到恶意操作数据库数据的目的。

SQL注入是通过正常的web应用服务器端口进行的,表面上与正常的数据请求没什么区别,如果不对这类恶意构造的SQL语句进行防御的话,数据库很可能会因为SQL注入漏洞的存在导致数据库中的信息受到威胁,比如数据被删除,挂马,留后门,甚至被进一步利用而拿到操作系统的管理员权限。

二、 sql注入攻击是如何发生的

无论是内网环境还是外网环境(互联网),B/S模式架构的web应用(以下指网站)都直接或者间接地受到各种类型的web攻击。对于后端数据库来说,以SQL注入带来的危害最为普遍,由于网站服务端语言自身的缺陷与程序员编写代码的安全意识不足导致了攻击者可以将恶意SQL语句注入到正常的数据库操作指令上,从而在数据库中被解析执行。

注入之前需要找到网站的各类与数据库形成交互的输入点。通常的一个网站的输入点包括:

表单提交,主要是POST请求,也包括GET请求等;

URL参数提交,GET请求; Cookie参数提交;

HTTP请求头部的一些可修改的值,比如Referer、User_Agent等,cookie也是存在于HTTP请求头中;

一些边缘的输入点,比如mp3文件的一些文件信息等; 其实只要服务端从客户端直接或间接获取到数据这一过程都是一次输入过程,无论直接或间接,输入的数据都应该默认认为是不安全的。

上面的各类输入点,只要任何一点存在过滤不严,过滤缺陷等问题,都有可能发生SQL注入攻击。很多时候SQL注入的过程都是由工具完成的,甚至包括大批量注入工具的使用。

三、 sql注入举例

假设DB中存在如下数据: +----+---------+----------+ | id | uid | password | +----+---------+----------+ | 1 | test | abc | | 3 | user | abc | | 5 | user2| abc | | 6 | admin | abc | +----+---------+----------+

正常数据库查询语句:SELECT * FROM user WHERE uid='admin' AND password='abc';

用户名框注入:'123' OR '1'='1',密码框输入:'abc' -->sql语句变为:SELECT * FROM user WHERE (uid='123' OR '1'='1') AND (password='abc');

可查询到所有密码为abc的用户,并登陆成功。 密码框注入:'123' OR '1'='1',用户名框输入:'admin' -->sql语句变为:SELECT * FROM user WHERE (uid='admin' AND password='123') OR ('1'='1');

可查询到所有用户,并登陆成功。

用户名框注入:'123' OR '1'='1',密码框注入:'123' OR '1'='1' -->sql语句变为:SELECT * FROM user WHERE [(uid='123' OR '1'='1') AND password='123'] OR '1'='1';

可查询到所有用户,并登陆成功(可以看出结果和只在密码框中注入sql的结果是一样的)。

上面中的()[]是为了给sql断句,以便理解(这样就应该很好理解了吧,一个很简单的逻辑哦,我就不解释了)。实际应用中并无此类括号。

注:如果知道了DB中某Table的tablename。则可以对其进行破坏,eg密码框注入:'123'; drop table tb_name; -->。


sql注入漏洞测试指南.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新课程理念下小学数学有效性强化策略

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: