书签 分享 收藏 举报 版权申诉 / 61
上传文档赚钱

类型第4章 注入攻击课件.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:4734002
  • 上传时间:2023-01-05
  • 格式:PPTX
  • 页数:61
  • 大小:4.42MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第4章 注入攻击课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第4章 注入攻击课件 注入 攻击 课件
    资源描述:

    1、第4章 注入攻击A1-注入攻击注入攻击发生在当不可信的数据作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者访问未被授权的数据。常见注入攻击漏洞,如SQL,OS命令注入。注入攻击-SQL注入概述原理 字符型SQL注入 数字型SQL注入实例演示防御注入SQL注入预备知识 SQL语言语言 结构化查询语言(Structured Query Language)简称SQL:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。注入SQL注入 常见SQL语句选择:

    2、选择:select*from table1 where 范围插入:插入:insert into table1(field1,field2)values(value1,value2)删除:删除:delete from table1 where 范围更新更新:update table1 set field1=value1 where 范围查找查找:select*from table1 where field1 like%value1%-like的语法很精妙,查资料!1=1,1=2的使用,在的使用,在SQL语句组合时用的较多语句组合时用的较多“where 1=1”是表示选择全部是表示选择全部“whe

    3、re 1=2”全部不选全部不选链接资源:http:/ INJECTION:字符串参数/login.asp管理员管理员管理员管理员程序员考虑的场景程序员考虑的场景:Username:adminPassword:p$w0rdSELECT COUNT(*)FROM Users WHERE username=admin and password=p$w0rd登录成功!登录成功!程序员未预料到的结果程序员未预料到的结果Username:admin OR 1=1-Password:1SELECT COUNT(*)FROM UsersWHERE username=admin OR 1=1-and passw

    4、ord=1SQL INJECTION:字符串参数/login.asp攻击者攻击者登录成功!登录成功!是SQL字符串变量的定界符攻击攻击关键关键通过定界符成功地将攻击者通过定界符成功地将攻击者的意图注入到的意图注入到SQLSQL语句中!语句中!通过注释保证通过注释保证SQLSQL语句正确语句正确!-是MS SQL的注释符后台代码SELECT*from Users WHERE login=ZAP or 1=1-AND password=*SELECT*from Users WHERE login=ZAP or 1=1 AND password=ZAP or 1=1 2 or 1 尝试万能密码,能否

    5、登陆,Why?参考:实验平台:注入技术-SQL注入原理万能密码注入最后得到的SQL命令变成SQL INJECTION:字符型注入字符型例句如下:select*from table where username=admin and password=password字符型注入最关键的是如何闭合sql语句以及注释多余的代码。例:输入:admin or 1=1,则无法进行注入。因为admin or 1=1会被数据库当作查询的字符串,SQL语句如下:select*from table where username=admin or 1=1 and password=password这时要想进行注入则必

    6、须注意字符串的闭合问题。如果输入admin or 1=1-,就可以继续注入,SQL语句如下:select*from table where username=admin or 1=1-and password=password实践练习&作业 1、实验平台:注入技术-SQL注入原理万能密码注入。理解:万能密码的原理。2、Sql注入练习平台 3、http 要求:登陆成功。注入SQL注入二、原理1、字符型SQL注入 对于字符型SQL注入手法其参数为字符型的,我们根据这种情形把对该种参数进行SQL注入的手法叫字符型SQL注入。通常的注入手法是在参数后面加or=这样的的保证查询语句为真的手法。SQL注入

    7、攻击的本质 SQL注入攻击的本质是把用户输入的数据当做代码执行。这里有两个关键条件,第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。即:用户提交的参数未做充分的检查、过滤,即被带进sql命令中,改变了原有Sql命令的语义,并且被数据库成功的执行。注入SQL注入二、原理2、数字型SQL注入对于数字型SQL注入手法其参数为数字型的,我们根据这种情形把对该种参数进行SQL注入的手法叫数字型SQL注入。通常的注入手法是在参数后面加“or 1=1”这样的的保证查询语句为真的手法。识别数据库 要想发动SQL注入攻击,就要知道正在使用的系统数据库,不然就没法提取重要的数据。首先

    8、从Web应用技术上就给我们提供了判断的线索:ASP和.NET:Microsoft SQL Server PHP:MySQL、PostgreSQL Java:Oracle、MySQL 底层操作系统也给我们提供了线索,比如安装IIS作为服务器平台,后台数据及很有可能是Microsoft SQL Server,而允许Apache和PHP的Linux服务器就很有可能使用开源的数据库,比如MySQL和PostgreSQL。基于错误识别数据库 大多数情况下,要了解后台是什么数据库,只需要看一条详细的错误信息即可。比如判断我们事例中使用的数据库,我们加个单引号。从错误信息中,可以发现是MySQL。上面错误信

    9、息可以发现是Microsoft SQL Server,如果错误信息开头是ORA,就可以判断数据库是Oracle。http:/ 单引号 and 1=1 and 1=2 2、猜表名(一般的表的名称无非是admin adminuser user pass password 等)and(Select count(*)from 表名)0 and exists(select*from 表名)3、猜列名 and(Select count(列名)from 表名)0 and exists(select 列名 from 表名)实验:http:/ SQL注入原理-手工注入access数据库注入SQL注入4、猜字段的

    10、长度(select top 1 len(username)from Admin)05、猜用户名、密码的ASCII码(select top 1 asc(mid(username,1,1)from Admin)0直到m不成立时,就得出所猜解字符的ASCII码值。取第2个字符的ASCII码(select top 1 asc(mid(username,2,1)from Admin)0注入SQL注入6、order by 子句 order by:为select查询的列排序。例:select id,username,password from users where id=1 执行正常。select id,

    11、username,password from users where id=1 order by 1 执行正常。select id,username,password from users where id=1 order by 4 抛出异常。抛出异常。由此,攻击者也得知了当前sql语句有几列存在。在OracleMySql数据库中同样适用此语句。在得知列数后,攻击者通常会配合union,联合查询,进行下一步的攻击。http:/ 实验:第2SQL注入原理-手工联合查询注入技术注入SQL注入7、union select查询Union关键字将两个或更多个查询结果组合为单个结果,俗称联合查询,大部分数

    12、据库都支持union查询,如:OracleMySqlsql serverDB2等。下面列出了使用union合并两个查询结果集的基本原则。所有查询中的列数必须相同。数据类型必须兼容。Union select null,null,null,null,null,null,null,null,null,null,null from adminUnion select 1,null,null,null,null,null,null,null,null,null,null from admin注入SQL注入8、SQL注入 工具明小子啊DSqlmap 实验地址:http:/ DVWA(Dam Vulnera

    13、ble Web Application)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞。DVWA安装安装和使用指南和使用指南 http:/ 只要应用程序涉及到数据库查询的位置,都有SQL注入存在的隐患。而如果查询参数,需要用户参与,则这些位置,就是注入漏洞经常被利用的地方。常见与如下地方:1、表单 2、下拉列表 3、附带查询参数的URL中SQL注入过程SQL注入的危害SQL注入的危害SQL注入的防御 SQL注入攻击的问题最终归结于用户可以控制输入,验证了一句老话:有输入的地方,就可能存在风险。想要更

    14、好 地防止SQL注入攻击,就必须清楚一个概念:数据库只负责执行SQL语句,根据SQL语句来返回数据。数据库并没有什么好的办法直接过滤SQL注入。知道此点后,我们应该明白防御SQL注入,还得从代码入手。SQL注入的防御1、严格的数据类型 Java、C#等强类型语言几乎可以完全忽略数字型注入。像ASP、PHP这类语言会根据参数自动推导出数据类型,这一特点在弱类型语言中是相当不安全的。防御数字型注入相对来说是比较简单的,只需要在程序中严格判断数据类型即可。SQL注入的防御例:PHPSQL注入的防御2、特殊字符转义 通过加强数据类型验证可以解决数字型的SQL注入,字符型却不可以,最好的办法就是对特殊字

    15、符进行转义。比如:单引号,如果用户输入的有,根据相应的数据库进行转义。如:mysql使用”进行转义。例:用户输入:adminor 1=1 转义后:adminor 1=1SQL注入的防御 虽然$id经过了mysql_real_escape_string转义了,可是因为后面的SQL语句$id没有单引号保护,会被系统认为是数值型,导致数值型注入$id=intval($id);加上,即可以防止字符型、数字型的注入了。MediumSQL注入的防御mysql_real_escape_string()函数转义 SQL 语句中使用的字符串中的特殊字符。但是,mysql_real_escape_string()

    16、仅仅会转义:“等几个字符。那是不是再增加一些过滤字符就可以了呢?比如包括空格、括号、以及一些SQL的保留字,select、insert 等。其实,这种基于黑名单的方法,都或多或少地存在一些问题。只需要将攻击字符转换一下编码格式即可绕过该防护函数,比如使用URL编码。SQL注入的防御HighSQL注入的防御3、框架技术 Java、C#、PHP等语言都有自己的框架,这些框架技术越来越成熟、强大,而且也具有较高的安全性。SQL注入的防御需求分析需求分析设设计计实现实现测试测试安全需求工程设计安全发布发布安全编码补丁管理配置加固软件黑盒测试渗透性测试代码安全审计安全软件开发生命周期依然是Web安全的基

    17、石。编码阶段:安全编码规范(输入验证、遵循安全SQL编码规范)测试阶段:代码审计、SQL注入测试等,可手工也可以结合自动工具部署阶段:数据库安全加固、Web应用防火墙、IDS/IPS注入命令注入实验地址实验平台-Web安全技术-注入技术-DVWA之命令注入http:/ 应用程序执行一个自己控制的固定程序,通过用户输入的参数来执行命令。这时,可以通过参数的分隔符,在参数中注入命令,来执行攻击者想要运行的命令。注入命令注入一、概述例1:通过参数注入(下面是一段PHP代码)$username=$_POST“user”;$command=ls l/home/.$username;System($com

    18、mand);如果用户没有做输入验证,一个恶意的用户输入$username如下:;rm rf/那么$command的结果为:ls l/home/;rm rf/由于分号;在Linux下是命令的分隔符,系统会首先执行ls命令,然后执行rm命令,删除整个系统文件。注入命令注入 2、应用程序将输入的整个字符串作为一个命令,应用程序只是做个中转,将命令传给操作系统执行。例如,通过 exec来执行命令,这时,可以通过命令分隔符注入命令。例2:DVWA中的实验:127.0.0.1&net user实验地址:http:/ user一般系统的命令分隔符有:分号;、&、&、|、|,它们的区别如下表所示。合天网实验注

    19、入命令注入二、利用漏洞127.0.0.1&net user demo 123456/add,net user demo,查看账户的基本信息。net localgroup Administrators demo/add,提升到管理员组的账户。net user demo/del,可以删除这个账户。注入命令注入二、检测漏洞 系统命令注入漏洞自动化测试工具 Commix Commix是一个适用于web开发者、渗透测试人员及安全研究者的自动化测试工具,可以帮助他们更高效的发现web应用中的命令注入攻击相关漏洞。Commix由Python编写。编写。注入命令注入二、检测漏洞注入命令注入三、防御 如果能够通过输入检查的方法避免命令行注入,则可以通过输入检查,对于如分号;/以及空格等这些有特殊意义的字符,可以实现过滤。但是这种使用黑名单的方法,往往很难彻底避免问题,因为有可能某些特殊字符会被遗漏。如果只允许使用有限的命令,使用白名单方式过滤。注入命令注入三、防御注入命令注入三、防御

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第4章 注入攻击课件.pptx
    链接地址:https://www.163wenku.com/p-4734002.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库