- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL注入攻击;SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。;目录/CONTENTS;所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。;一般用户登录用的SQL语句为:
SELECT * FROM user WHERE username=admin AND password=passwd;
此处admin和passwd分别为用户输入的用户名和密码,如果程序员没有对用户输入的用户名和密码做处理,就可以构造万能密码成功绕过登录验证。;如用户输入 or 1#,SQL语句此时将变为:
SELECT * FROM user WHERE username=or 1# AND password=;
or 1为TRUE,#注释掉后面的内容,逻辑就会变成类似于
SELECT * FROM user WHERE username=or 1;
or 语句连接两个条件,其中只要一个为true,结果就会true
所以查询语句可以正确执行。;pikachu来测试一下:
查看源代码,可以看到SQL语句为:
SELECT id,email FROM member WHERE username=$name;
拼接之后,SQL语句为SELECT id,email FROM member WHERE username= or 1#;
语句永恒为真,则输出所有的用户
;SQL注入漏洞的产生需要满足两个条件:
参数用户可控:前端传给后端的参数内容是用户可以控制的。
参数带入数据库查询:传入的参数拼接到SQL语句并带入数据库查询。;① http://www.XXXXXX.com/showtail.asp?id=40
② http://www.XXXXXX.com/showtail.asp?id=40 and 1=1
③ http://www.XXXXXX.com/showtail.asp?id=40 and 1=2
如果执行①后,页面上提示报错或者提示数据库错误的话,说明是存在注入漏洞的。
如果执行②后,页面正常显示,而执行③后,页面报错,那么说明这个页面是存在注入漏洞的。
;目录/CONTENTS;SQL注入的分类 - 按注入点类型来分;按数据提交方式来分类:
GET型注入:提交数据的方式是GET, 注入点的位置在GET参数部分。比如有这样的一个链接 /news.php?id=1 , id 是注入点。
POST型注入:使用 POST 方式提交数据,注入点位置在 POST 数据部分, 常发生在表单中。
cookie注入:HTTP请求的时候会带上客户端的Cookie,注入点存在cookie当中的某个字段中。
HTTP头部注入:注入点在 HTTP 请求头部的某个字段中。比如存在 User-Agent 字段中。严格讲的话,Cookie 其实应该也是算头部注入的一种形式。因为在 HTTP 请求的时候, Cookie 是头部的一个字段。
;按照执行效果来分类:
联合查询注入,可以使用union的情况下的注入。
基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。;目录/CONTENTS;1.限制数据类型:
在传入参数的地方限制参数的类型,比如整型 Integer,随后加入函数判断,如is_numeric($_GET[‘id’]) 只有当get到的id为数字或者数字字符时才能执行下一步,限制了字符自然就限制了注入,毕竟构造参数怎么可能不传入字符。但这种方法存在一定的限制,只能在特定的页面才能使用,一般大部分都是要求我们传入的字符串,但可以很大程度限制整型注入的情况。;2.正则匹配过滤:
preg_match(/and|select|i
您可能关注的文档
- 渗透测试技术 课件 第3章-3.1-信息收集简介.pptx
- 渗透测试技术 课件 第3章-3.2-信息收集工具.pptx
- 渗透测试技术 课件 第3章-3.3-被动信息收集.pptx
- 渗透测试技术 课件 第3章-3.4-主动信息收集.pptx
- 渗透测试技术 课件 第4章-4.1-漏洞扫描简介.pptx
- 渗透测试技术 课件 第4章-4.2-网络漏洞扫描工具.pptx
- 渗透测试技术 课件 第4章-4.3-Web应用漏洞扫描工具.pptx
- 渗透测试技术 课件 第5章-5.1-Web应用渗透简介.pptx
- 渗透测试技术 课件 第5章-5.3-XSS攻击.pptx
- 渗透测试技术 课件 第5章-5.4-CSRF攻击.pptx
- 大学生职业规划大赛《新闻学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《应用统计学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《中医学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《信息管理与信息系统专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《汽车服务工程专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《水产养殖学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《市场营销专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐表演专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐学专业》生涯发展展示PPT.pptx
文档评论(0)