网络攻击与防护论文4.doc
《网络攻击与防护论文4.doc》由会员分享,可在线阅读,更多相关《网络攻击与防护论文4.doc(15页珍藏版)》请在冰豆网上搜索。
江西理工大学应用科学学院
《网络攻击与防御》课程作业论文
题目:
SQL注入攻击
系别:
信息系
班级:
网络091
姓名:
张辉安
成绩:
二〇一二年四月
SQl注入攻击课程设计
一、选题的目的和意义
随着网络产业的迅猛发展,B/S模式(即浏览器/服务器模式)的网络应用越来越普及,这些web应用大多使用脚本语言(比如ASP、PHP等)加后台数据库系统(比如MSSQL、Access、MySQ等)开发。
在这些网络程序中,用户输入的数据被当作命令和查询的一部分,送到后端的解释器中解释执行。
如果不对网页中用户提交的数据进行合法性判断和过滤,就可能导致安全隐患。
自从我上了网络与攻击这门课后我对口令攻击这节很感兴趣,因为它利用了数据库的漏洞,而且数据库是我们学过的内容,虽然不能说是融会贯通但是基础还是可以的,我觉得学号了口令攻击很有用,第一,可以在同学或者朋友面前炫耀一下自己,第二,就是为了保护自身,说不定以后从事了做网站这一行,如果不懂得其中的原理,岂不是漏洞百出,要吃大亏,所以总的一句话是为了别人也是为了自己。
二、目前该选题的研究现状
出现该漏洞的原因有一下几点:
1、写的程序不严格
2、操作系统和数据库管理系统不成熟
3、黑客太多,高手太强。
举个例子来说吧(拿注册登陆的例子):
假设我们对用户的注册的名字和登陆时的名字都不做处理,并且程序不作多重判断。
那么登陆的时候填入用户名:
'and1=1or'1'='1密码为:
1'or'1'='1
asp接收到后放在sql语句里。
strSql="select*fromuserswhereuname='"&uname&"'andpass='"&pass&"'"
把值传进来语句就成了:
strSql="select*fromuserswhereuname=''and1=1or'1'='1'andpass='1'or'1'='1'"
把这个语句传给SQLSERVER,返回的就是所有的用户记录了。
如果程序只判断返回的记录是否大于0,那它登陆自然成功了!
。
其他的比如网址参数的SQL注入等都是一个道理,就是利用SQL语句和程序的漏洞把非法的查询语句传给SQLSERVER。
其实主要是利用了SQLSERVER的漏洞
三、设计思路分析
(1)客户通过W曲服务器的URL申请页面。
用户通过浏览器输入要访问网站的URL,在返回的网页上输入想要查看的内容,将用户请求内容提交给W曲服务器。
(2)服务器接收请求并处理网页上的代码。
如果用户请求中有查询数据库信息的要求,那么w曲应用程序根据用户提交的请求内容动态构造SQL语句,并将查询请求提交到数据库。
(3)数据库返回结果到W曲服务器。
W曲服务器以一定的数据结构接受数据库返回的数据。
(4)Web服务器将代码的处理结果转换成HTML代码返回给客户端,并显示在浏览器上。
(5)用户查看浏览器显示信息。
服务器断丌与客户的联系并转向其他客户,以便提供新的服务。
2.2SQL注入攻击基础SQLInjectionAttacks即sQL注入攻击给网站安全造成了巨大的威胁。
SQL注入攻击存在各种各样的途径(即用户输入提交途径)、不同的攻击动机以及多种多样的攻击类型。
2.2.1SQL注入攻击的途径用户通过一定的途径将自己的输入提交给Web应用程序,因而SQL注入也就有其相应的攻击途径。
恶意用户一般通过客户端输入、server变量以及cookie三种基本【2l】的方式进行畸形SQL语句查询的提交,从而达到进行SQL注入的最终目的。
四、设计过程描述
初期和中期都在寻找不同的网站进行测试,后期就做如下内容:
找一个类似http:
//xxx.xxx.xxx/abc.asp?
p=YY的网站。
二、在http:
//xxx.xxx.xxx/abc.asp?
p=YY后面追加“and1=1”并访问该网址即,http:
//xxx.xxx.xxx/abc.asp?
p=YYand1=1应该与访问原地址得到的结果相同。
,三、在http:
//xxx.xxx.xxx/abc.asp?
p=YY后面追加“and1=2”并访问该网址即http:
//xxx.xxx.xxx/abc.asp?
p=YYand1=2应该与访问原地址得到的结果不同,并提示数据库错误。
(二,三同时满足则此网站必定存在SQL漏洞。
)四、访问http:
//xxx.xxx.xxx/abc.asp?
p=YYandexists(select*from网站数据库常用表段名)网站数据库常用表段名:
adminusersadministrator等,如果进入的网页像步骤二一样,是正常网页,证明存在该表段名。
找寻该SQL数据库使用的表名,进而寻找网站的管理员名、密码等信息。
我们可以通过Socket编程,把常用表段名写成一个链表,通过Socket编程遍历一边,并找到可入侵点。
五、访问http:
//xxx.xxx.xxx/abc.asp?
p=YYandexists(select[网站数据库常用字段名]from第四步找到的可入侵表名)网站数据库常用字段名:
adminpasswordusername等,如果进入的网页像步骤二一样,是正常网页,证明存在该字段名。
找寻该SQL数据库使用的字段名,进而寻找网站的管理员名、密码等信息。
我们可以通过Socket编程,把常用字段名写成一个链表,通过Socket编程遍历一边,并找到更多有用的信息。
六、访问http:
//xxx.xxx.xxx/abc.asp?
p=YYandexists(select*from第四步找到的可入侵表名where第五步找到的可入侵字段名like'_‘)下划线的长度等于猜测的字段名长度,adminpasswordusername等,如果进入的网页像步骤二一样,是正常网页,证明“_”的长度为该字段长度。
找寻该SQL数据库中字段名例如admin、password等字段的长度,进一步得到某些字段的长度信息。
我们可以通过Socket编程,写一个for循环,测试各敏感字段的长度。
七、利用第六步中得到的下划线的长度,把其中部分下划线替换为a-z或0-9穷举出字段值。
我们可以通过Socket编程,写一个for循环,得到具体字段值。
八、访问http:
//xxx.xxx.xxx/可入侵后门字段名,找到网站后门。
五、设计成果展示
实验步骤:
一、打开网页判断是否可以攻击
该网页不可以进行注入
打开网页判断是否可以攻击,将首页的地址复制到工具中如图单机“开始扫描“。
二、猜测数据表名
猜测数据库的表名可以用工具知道数据库的名字。
三、用工具检测网站管理员的登陆后台
用工具检测网站管理员的登录后台单击扫描后台地址,可以得到后台登录的地址
四、登陆网站后台
登录网站后台
五、然后就可以添加用户修改网页了
添加用户,修改网页,添加内容。
六、修改首页
七、Sa的权限利用(sa是数据库的超级用户)
单击“命令行”软件会提供一个具有管理员权限的shell界面写入命令(dos命令)添加用户将heike加入管理员组中,(当然也可加入其它组中)在这里我觉得有必要写一下dos下关于账户的命令:
2)得到本地主机的用户列表netuser3)显示本地某用户的帐户信息netuser帐户名4)显示本地主机当前启动的服务netstart作者:
包永佳2011-05-275)启动/关闭本地服务netstart服务名netstop服务名6)在本地添加帐户netuser帐户名密码/add7)激活禁用的用户netuesr帐户名/active:
yes8)加入管理员组netlocalgroupadministrators帐户名/add这样你就获得了服务器的管理员账号如果对方的23号端口开了telnet服务开了,你就可telnet上目标主机了,如果对方的远程桌面服务开了(3389端口)那就更方便了。
如果对方的139或445端口开了可以利用ipc管道入侵主机
八、课设总结
回顾我的设计成果,实现了SQL注入成果,实现了我原本的设计构想,经过两个礼拜的研究和实验总于皇天不负有心人把自己想要的结果得到了,虽然不是很完美,但是还是达到了我预期的要求,成功的猜测出用户名和密码,虽然这点算不上什么,但是对于我来说很有成就感,进一步的肯定了自己。
既能巩固数据库的知识又能了解web服务器的相关知识
虽然在实验当中遇到很多不顺,但是凭借着自信心还是能够完成任务,实验中的好多困难都是我的老师给我说的,百度就是我最好的老师,它教会我如何使用了扫描工具等诸多问题。
我个人觉得如果这种技术全面推广的话,不知道有多少网站受到攻击,多少用户的利益受到损害,比如一个在线银行的应用,被掌握这类技术的人知道了,他可以随便更改客户的信息,所以应该善用。
如果下次再做的话我一定会做的更好,更完美,我会在推断用户名和密码那里做的更快,更准。