921202-信息系统安全与对抗实践-9. sql注入漏洞(一)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息系统安全与对抗实践
SQL 注入漏洞(一)
内容提要
•SQL注入漏洞
-基本介绍
-基本原理
-攻击步骤
•靶场搭建
-DVWA(综合型靶场)
-Sqli-labs(SQL注入靶场)
2
3
•SQL Injection ,即SQL 注入,是指攻击者通过注入恶意的SQL 命令,破坏SQL 查询语句的结构,从而达到执行恶意SQL 语句的目的。SQL 注入漏洞的危害是巨大的,常常会导致整个数据库被“脱裤”,尽管如此,SQL 注入仍是现在最常见的Web 漏洞之一。
•原理
select *from user where username =‘$username ’,红色部分内容为用户可控的内容,如果我们尝试输入一个单引号(‘)。Sql 语句就变成了select *from user where username =’’’,前面两个单引号组成了一对,后面空出一个单引号不符合语法规则,所以产生报错。此时我们已经修改了原本SQL 语句的结构。
输入$username 参数的地方也叫做注入点,注入点可能存在于GET 参数内、POST 参数内、HTTP 头字段内等。SQL 注入漏洞
SQL注入漏洞
•原理
如果我们输入’ or ‘1’=‘1,那么sql语句就会变成select * from user where username = ‘’or ‘1’=‘1’,此时该语句就等同于select * from user 。
•实战
-绕过登录
select * from username = ‘$username’ and password =‘$password’
-方法
•使用注释
•闭合单引号
4
SQL注入漏洞
•发生的原因
-攻击者可以对输入变量进行控制
-服务器对用户输入的变量没有进行安全处理(过滤、转义)
-不安全的数据库配置(最小用户权限、安全配置)
•SQL注入漏洞的种类
-根据注入点输入类型分为字符串和数字型
-根据注入点的位置分为POST注入,GET注入,HTTP头注入
-根据获取信息的方式分为基于报错的注入、基于布尔的盲注、基于时间的盲注、联合查询(union select)注入等
5
SQL注入漏洞
•SQL注入一般流程
-判断是否存在注入,注入是字符型还是数字型
-猜解SQL查询语句的结构,并根据注入的类型来判断注入方法。
-获取当前数据库
-获取数据库中的表
-获取表中的字段名
-获取数据
6
7
•DVWA (Damn Vulnerable Web Application )
-是一个用来进行安全脆弱性鉴定的PHP/MySQL Web 应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web 开发者更好的理解web 应用安全防范的过程。
-DVWA 共有十个模块,分别是Brute Force (暴力(破解))、Command Injection (命令行注入)、CSRF (跨站请求伪造)、File Inclusion (文件包含)、File Upload (文件上传)、Insecure CAPTCHA (不安全的验证码)、SQL Injection (SQL 注入)、SQL Injection (Blind )(SQL 盲注)、XSS (Reflected )(反射型跨站脚本)、XSS (Stored )(存储型跨站脚本)。
-并且每个模块的代码分为四个安全等级Low ,Medium ,High ,Impossible 。靶场搭建
靶场搭建
•Sqli-labs
-是一个sql注入的靶场,用于学习sql注入。
-分为四个部分
•Basic Injections(基本注入)
•Advanced injections(进阶注入)
•Stacked Injections(堆叠注入)
•Challenges(限制次数的注入)
8