网络攻防课程设计

发布时间:2014-12-31 16:05:36   来源:文档文库   
字号:

目录

一:简介: 1

二:攻击原理: 2

1SQL注入的原理…………………………………………………………………………………………………………………2

2SQL注入攻击的原理………………………………………………………………………………………………………...3

三:工作过程: 4

1:所用工具介绍: 4

2:工作的步骤和过程(截图): 5

四:功能或后果: 9

五:防范手段与措施: 9

六:结论: 10

七:参考文献: 12

一、简介:

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问防止SQL注入攻击没什么区别,所以市面的防火墙都不会对SQL注入发出警报,如果管理员没查看ⅡS日志的习惯,可能被入侵很长时间都不会发觉。但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况,需要构造巧妙的SQL语句,从而成功获取想要的数据。

二、攻击原理

1、sql注入的原理:

SQL全称是Structure Query Language(结构化查询语言),是广泛用于关系型数据库的查询语言。大部分的Web网站都需要利用SQL语句进行查询。

Select语句是最常用的SQL语句,一般的使用格式是

Select <字段列表> From <数据表名> Where <查询条件>

编程是,由Web的编程语言(如ASP, PHP, JSP等)首先生成一个查询字符串,比如一个Select语句,提交给相应的数据库进行执行,从而得到所需的数据。形成这些SQL语句的时候,经常需要使用由客户端提交过来的数据。比如ASP网页代码

sql="select * from admin where username='" &Request("username") & "' and password=' " & Request("password") & "'"

这里的Request("username") 和 Request("password")分别表示用户输入的用户名和密码。正常情况下,该语句将形成如下格式的SQL查询:(假设用户名和密码分别是zhang3和123456)

select * from admin where username='zhang3' and password='123456'

如果用户名和密码正确,该查询将返回对应于zhang3的纪录,Web程序认为是合法用户。如果用户名和密码不正确,该查询没有记录返回,Web程序可以认为是非法用户,而拒绝登录操作。

单如果我们在密码的地方输入以下内容:

1' or '1'='1

则相应的SQL查询变为

select * from admin where username='zhang3' and password='1' or '1'='1'

则该语句将返回admin表中所有的纪录。从而Web程序认为是合法用户,登录成功。

对于SQL Server数据库,我们还可以利用分号,在一个查询中执行多条语句,利用"--"符号进行注释,可以执行更多的命令。如果该网站使用的数据库登陆帐号是数据库管理员帐号,往往还可以执行一些具有很强功能的存储过程,甚至取得整个系统的管理员权限。

SQL注入的形式已经有很多,我们这里说的仅是最简单的情形。现在还有一些工具,可以自动检测网站是否存在这类SQL注入漏洞。如果存在,还可以自动地进行注入。

SQL注入,英文名称为SQL Injection,主要原因是没有对用户输入进行有效的验证。

2、攻击原理:

实验网站的源代码位于xampp\htdocs\injection 目录。login.php是网站的用户登陆程序。从第一步中可以得知登陆程序是借助HTML表单通过HTTP协议中的 POST 方法收集用户信息的。用记事本打开login.php程序,有以下代码:

$name = $_POST['name'];

$password = $_POST['password'];

$q = "SELECT * FROM users WHERE name='$name' AND pass=SHA1('$password')";

$_POST是从表单获取的用户数据。所以,要对实验网站做SQL攻击,就是要通过用户提交的姓名和密码去改变网站程序动态构造的SQL语句的含义。另外,从源代码也可以看出密码是经过SHA处理后存放在数据库中的(不要在数据库中明文保存用户密码!)。

SQL语句分析

如果,我们输入用户名“root”,密码“wampp”。动态构造的SQL语句为:

SELECT * FROM users WHERE name='root' AND pass=SHA1('wampp')

经过设计,如果我们输入用户名为' or '1'='1' ; -- ',密码为任意字符,比如是psw。其动态构造的SQL语句为:

SELECT * FROM users WHERE name=' ' AND pass=SHA1(' ')

三.工作过程

1、所用工具介绍

所用工具的介绍:

所用的工具是XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建 XAMPP 软件站集成软件包。这个软件包原来的名字是LAMPP,但是为了避免误解,最新的几个版本就改名为 XAMPP 了。它可以在Windows、Linux、Solaris、M ac OS X 等多种操作系统下安装使用,支持多语言:英文、简体中文、繁体中文、韩文、俄文、日文等。

该软件的使用,以系统管理员用户登录,将下载的包在服务器上解压到任意目录(不能放在中文名目录内)、比如放到c盘根目录,

双击运行目录内的setup_xampp.bat初始化xampp。然后运行 xampp-control.exe 可以启动或停止apache、mysql等各个模块并可将其注册为服务。

除此之外,还有以下几种比较常用的注入工具,

Pangolin

Pangolin能够通过一系列非常简单的操作,达到最大化的攻击测试效果。它从检测注入开始到最后控制目标系统都给出了测试步骤。Pangolin是目前国内使用率最高的SQL注入测试的安全软件,可以说是网站安全测试人员的必备工具之一。

Sqlmap

sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,日前支持的数据库是MS-SQL,,MYSQL,ORACLE和POSTGRESQL。SQLMAP采用四种独特的SQL注入技术,分别是盲推理SQL注入,UNION查询SQL注入,堆查询和基于时间的SQL盲注入。其广泛的功能和选项包括数据库指纹,枚举,数据库提取,访问目标文件系统,并在获取完全操作权限时实行任意命令。sqlmap的功能强大到让你惊叹,常规注入工具不能绕过的话,终极使用sqlmap会有意想不到的效果。

啊d注入工具

啊D注入工具是一种主要用于SQL的注入工具,由彭岸峰开发,使用了多线程技术,能在极短的时间内扫描注入点。使用者不需要经过太多的学习就可以很熟练的操作。并且该软件附带了一些其它的工具,可以为使用者提供极大的方便。

明小子

明小子注入工具是跟啊D注入工具功能类似的注入工具,集合了常用上传漏洞的利用,webshell管理,目录查看等功能。

2:、工作的步骤流程

1. 设置实验环境

如果实验用的计算机安装了IIS或MySQL,先将它们关闭。

请将 xampp.zip 解压到任一分区的根目录。将解压出 xampp 目录。

进入 xampp 目录,双击运行 xampp-control.exe

点击对话框的Setup按钮

在弹出的字符窗口中选择 “2. relocate XAMPP” 更新配置文件中的程序路径

然后选择y

设置完成后选择 x 退出配置。

在XAMPP控制面板中启动Apache和MySQL服务

SQL注入漏洞网站.zip 解压到 xampp\htdocs 目录。

登陆http://localhost/phpmyadmin/(用户名root,密码wampp)

登陆到MySQL的管理界面后,点击“导入”。

然后选择导入 xampp\htdocs\injection\includes\create_db.sql


用浏览器打开 http://localhost/injection/login.php 然后使用用户“root”和密码“wampp”登陆实验网站。检查网站是否已经正常工作。

然后注销,退出登录。

四、功能或后果

Sql注入攻击带来的后果有,被非法读取、篡改、添加、删除数据库中的数据;

盗取用户的各类敏感信息,获取利益;通过修改数据库来修改网页上的内容;私自添加或删除账号;注入木马

五、防范手段与措施:

对于sql注入攻击,我们应该实行以下的防范手段和措施,

1) 在构造动态SQL语句时,一定要使用类安全(type-safe)的参数加码机制。大多数的数据API,包括ADO和ADO. NET,有这样的支持,允许你指定所提供的参数的确切类型(譬如,字符串,整数,日期等),可以保证这些参数被恰当地escaped/encoded了,来避免黑客利用它们。一定要从始到终地使用这些特性。这样可以有效的防止有人试图偷偷注入另外的sql表达式。

2) 在部署你的应用前,始终要做安全审评。建立一个正式的安全过程,在每次你做更新时,对所有的编码做审评。

3) 千万别把敏感性数据在数据库里以明文存放。

4) 确认你编写了自动化的单元测试,来特别校验你的数据访问层和应用程序不受SQL注入攻击。

5) 锁定你的数据库的安全,只给访问数据库的web应用功能所需的最低的权限。

6) 从安全技术手段上来说,可以通过数据库防火墙实现对SQL注入攻击的防范,因为SQL注入攻击往往是通过应用程序来进攻,可以使用虚拟补丁技术实现对注入攻击的SQL特征识别,实现实时攻击阻断。

7) 要防范SQL注入漏洞,根本的办法严格检查用户输入数据的合法性;如果网站编程语言支持参数化SQL,最好使用参数化SQL的方式访问数据库,不要再直接构造SQL查询字符串

六、结论(个人观点):

通过对SQL注入漏洞的学习,让我了解了注入漏洞的原理,及SQL注入对于系统安全性的影响,造成的危害和如何降低SQL注入攻击风险的方法等。

Sql注入攻击,其实就是一种利用一些网站程序员在编写代码的时候,没有对用户输入数据的合法性进行判断从而使应用程序存在的安全隐患,提交一段数据库查询代码,从而获得某些非公开数据的黑客攻击行为。

对于SQL注入攻击,以下这张图是SQL注入攻击的图册,

通过这张图册,我们可以看到SQL注入攻击的过程。

然而,我们通过上一张图了解了SQL注入攻击的过程后,我们可以更好的对这一攻击进行防御,如下图所示,

七、参考文献:

http://baike.baidu.com/link?url=zpZs_Qs7tbU-bubQUR8tvOejMqUxuqqCFkmT52sn3iq5PXpLkUUItsR3ZQZlrelt

http://netsecurity.51cto.com/art/200904/121212.htm

本文来源:https://www.2haoxitong.net/k/doc/ac1d5485998fcc22bcd10daa.html

《网络攻防课程设计.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式