版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务2SQL注入漏洞检测和加固——项目九Web应用的安全配置课程设计和制作:
蓝永健电子工业出版社《网络信息安全基础》教材配套资源本课件为《网络信息安全基础(AIGC版)》配套教学资源,由编写团队精心打造。为便于教学使用,团队同步提供了丰富的辅助材料,涵盖微课视频、教学课件、实训手册、习题答案、课程思政元素、课程标准及程序源代码等。同时,教材配套超星教学示范包,支持一键克隆为网络在线课程,助力高效开展线上线下混合式教学。欢迎联系出版方订购使用。
书名:《网络信息安全基础(AIGC版)》出版社:电子工业出版社主编:蓝永健、徐龙泉副主编:高安邦、石晋阳、钟达夫参编:林俊生、黄超强、肖媚娇出版日期:2026年目录CONTENTS任务规划01相关知识02SQL注入的简介SQL注入分类SQL注入的防御自动化SQL注入工具sqlmap简介子任务1在WEB页面测试SQL注入03子任务2使用sqlmap测试SQL注入04子任务3加固建议和应对0501任务规划任务规划“CTF-DEMO”网站基于PHP+MySQL编写的程序。要求对该网站进行SQL注入检测。如果发现有SQL注入漏洞,则对其他提出修复或者安全加固建议。小安先对“CTF-DEMO”网站采用GET或者POST方式,直接进行SQL注入检测;然后再使用sqlmap工具进行SQL注入检测。如果检测出SQL漏洞,再根据情况给出安全加固建议。本任务的环境Windows10操作系统安装Wireshark4.2.6进行网络数据包捕获使用phpstudy8.1配置为测试服务器使用DBeaver管理数据库网站程序“CTF-DEMO”已经在教材配套素材中提供“本任务的环境下载和安装sqlmap下载和安装Python环境(建议使用PyCharm运行sqlmap)数据库服务器为,数据库名称为dbctf_demo。“02相关知识相关知识——2.1SQL注入的简介相关知识——2.1SQL注入的简介原理概述SQL注入是指攻击者通过向Web应用程序的输入字段(如表单、URL参数等)插入或“注入”恶意的SQL代码片段,从而欺骗数据库服务器执行非授权的任意查询或操作。这些操作可能包括查询、修改、删除数据库中的数据,甚至执行系统命令(如果数据库配置允许的话)。相关知识——2.1SQL注入的简介必要条件①参数用户可控:前端传给后端的参数内容是用户可以控制的。这意味着攻击者可以修改这些参数,以包含恶意的SQL代码。②参数代入数据库查询:传入的参数被拼接到SQL语句中,并且该SQL语句被代入数据库执行。如果应用程序没有对这些参数进行充分的过滤或转义,那么恶意的SQL代码就可能被执行。相关知识——2.1SQL注入的简介工作过程相关知识——2.1SQL注入的简介工作过程1)寻找注入点:攻击者首先尝试找到应用程序中可能存在SQL注入漏洞的输入点,如用户登录表单、搜索查询框等。2)构造恶意SQL语句:攻击者根据找到的注入点,构造包含恶意SQL代码的输入数据。这些恶意SQL代码旨在欺骗数据库执行非授权的操作。3)提交恶意数据:攻击者将构造好的恶意数据提交给Web应用程序。相关知识——2.1SQL注入的简介工作过程4)执行恶意SQL语句:由于应用程序没有对这些输入数据进行充分的过滤或转义,恶意SQL代码被拼接到合法的SQL语句中,并被数据库执行。5)获取敏感信息或执行非法操作:一旦恶意SQL语句被执行,攻击者就可以获取数据库中的敏感信息(如用户密码、个人数据等),或者执行其他非法操作(如删除数据、修改数据等)。SQL注入带来的法律风险在法律层面上,SQL注入所带来的风险是多方面的,涉及到隐私、数据安全、合规性和责任等多个领域。侵犯计算机信息系统罪:非法获取、删除或篡改数据库数据,可能构成刑事犯罪。侵犯公民个人信息罪:窃取用户隐私数据,将面临严厉刑事处罚。破坏生产经营罪:导致系统瘫痪或数据丢失,影响正常业务运营。民事赔偿责任:需承担数据恢复、业务损失及用户索赔等经济赔偿。行政处罚风险:违反网络安全法,将面临罚款、停业整顿等行政处罚。相关知识——2.2SQL注入分类相关知识——2.2SQL注入分类(1)按变量类型分数字型:当输入的SQL语句中的参数为数字时,攻击者可能通过修改这些数字来执行SQL注入。例如,在URL中直接修改ID参数。字符型:当输入的SQL语句中的参数为字符串时,攻击者可能通过在字符串中插入SQL代码片段来执行注入。相关知识——2.2SQL注入分类(2)按HTTP提交方式分GET注入:通过URL的查询字符串(即URL中"?"后面的部分)提交恶意数据。POST注入:通过HTTPPOST请求体提交恶意数据,这种方式常用于表单提交。Cookie注入:通过修改Cookie中的值来执行SQL注入,这种方式较为隐蔽。相关知识——2.2SQL注入分类(3)按注入方式分布尔注入:通过判断SQL查询返回的结果是真还是假(即是否有数据返回),来推断数据库中的信息。联合查询注入(Union-basedInjection):通过在SQL查询中插入UNIONSELECT语句,将恶意查询的结果与正常查询的结果合并返回。多语句注入(StackedQueries):允许攻击者在单个SQL查询中执行多条SQL语句。报错注入:利用数据库的错误信息来获取数据库的结构或数据。延时注入(Time-basedBlindSQLInjection):通过在SQL查询中插入延时函数(如SLEEP),根据查询响应的时间来推断数据库中的信息。内联注入(InlineInjection):直接在SQL查询中插入恶意代码,改变原有查询的逻辑。相关知识——2.2SQL注入分类(4)按数据库类型分不同的数据库系统(如MySQL、SQLServer、Oracle等)可能有不同的SQL语法和功能,因此SQL注入的具体方式也可能有所不同。。相关知识——2.2SQL注入分类SQL布尔值注入——举例:假设有基于MySQL数据库Web应用程序,它通过URL接收一个ID参数来查询用户信息,URL如下所示:正常情况下,后端可能会执行类似以下的SQL查询然而,如果应用程序没有对用户输入进行充分的过滤,攻击者可以尝试修改URL中的ID参数来执行SQL注入。例如,攻击者可以尝试以下URL:修改后的SQL查询将变为/user.php?id=1SELECT*FROMusersWHEREid=1/user.php?id=1'OR'1'='1SELECT*FROMusersWHEREid='1'OR'1'='1'相关知识——2.2SQL注入分类SQL布尔值注入——举例:由于'1'='1'永远为真,因此这个查询将返回users表中的所有记录,而不是仅返回ID为1的记录。SELECT*FROMusersWHEREid='1'OR'1'='1'相关知识——2.2SQL注入分类SQL联合查询注入——举例:假设有一个基于MySQL数据库的Web应用程序,它有一个页面用于根据用户ID显示用户信息。该页面通过URL接收用户ID作为参数,并执行类似以下的SQL查询:SELECTusername,emailFROMusersWHEREid=$user_id其中$user_id是用户通过URL提交的用户ID,且假设应用程序没有对这个参数进行充分的过滤或转义。攻击者可以尝试修改URL中的用户ID参数,以执行联合查询注入。例如,攻击者可以尝试以下URL/userinfo.php?id=-1'UNIONSELECTdatabase(),user()---相关知识——2.2SQL注入分类SQL联合查询注入——举例:在这个例子中,攻击者做了以下几件事:1)将$user_id设置为-1'(注意单引号闭合了原始查询中的字符串字面量)。2)插入了UNIONSELECTdatabase(),user(),这是一个联合查询,它选择当前数据库的名称(通过database()函数)和MySQL服务器连接的用户名(通过user()函数)。3)添加了---作为SQL注释的开始,用于忽略原始查询中WHERE子句剩余的部分(如果有的话)。修改后的SQL查询将大致如下:/userinfo.php?id=-1'UNIONSELECTdatabase(),user()---SELECTusername,emailFROMusersWHEREid=-1'UNIONSELECTdatabase(),user()---相关知识——2.3SQL注入的防御相关知识——2.3SQL注入的防御为了防止SQL注入攻击,可以采取以下防御措施。(1)使用参数化查询:参数化查询(也称为预处理语句)是防止SQL注入的最有效方法之一。通过将SQL语句中的参数与数据分开处理,可以确保数据不会被解释为SQL代码的一部分。(2)对用户输入进行严格的验证和过滤:对所有用户输入进行严格的验证和过滤,确保它们符合预期的格式和类型。这可以防止攻击者插入恶意的SQL代码。相关知识——2.3SQL注入的防御为了防止SQL注入攻击,可以采取以下防御措施。(3)使用ORM框架:对象关系映射(ORM)框架通常会自动处理SQL注入的风险,因为它们使用参数化查询或其他机制来确保用户输入不会被解释为SQL代码。(4)限制数据库权限:确保Web应用程序使用的数据库账户具有最低的必要权限。这可以防止攻击者通过SQL注入攻击获得对数据库的完全控制权。(5)使用Web应用防火墙(WAF):WAF可以检测和阻止SQL注入攻击等恶意流量,从而保护Web应用程序免受攻击。相关知识——2.4自动化SQL注入工具sqlmap简介相关知识——2.4自动化SQL注入工具sqlmap简介SQLMap是一款由Python开发的自动化SQL注入工具,其主要功能是扫描、发现并利用SQL注入漏洞。SQLMap内置了许多绕过插件,支持多种数据库,包括但不限于MySQL、Oracle、PostgreSQL、SQLServer、Access、IBMDB2、SQLite等。该工具的强大之处在于其能够识别数据库指纹、枚举数据库内容、提取数据、访问目标文件系统,并在获取完全操作权限时执行任意命令。相关知识——2.4自动化SQL注入工具sqlmap简介(1)SQLMap安装:SQLMap的安装主要依赖于Python环境,因为SQLMap是用Python编写的自动化SQL注入工具。请读者自主完成它的安装。相关知识——2.4自动化SQL注入工具sqlmap简介(2)SQLMap语法:其常用参数涵盖了从目标指定、数据库枚举到数据提取等多个方面。1)目标指定-u或--url:指定目标URL。例如,sqlmap.py-u"/vuln.php?id=1"。--data:在POST请求中发送的数据。例如,sqlmap.py-u"/login.php"--data="username=admin&password=pass"。--cookie:指定HTTPCookie头的值。例如,sqlmap.py-u"/vuln.php"--cookie="PHPSESSID=xxxxx"。--referer:指定HTTPReferer头的值。qlmap.py[选项]-uURL相关知识——2.4自动化SQL注入工具sqlmap简介(2)SQLMap语法:2)数据库枚举--dbs:枚举数据库管理系统中的所有数据库。--current-db:获取当前数据库的名称。-D:指定要枚举的数据库名称。例如,sqlmap.py-u"..."-Ddatabase_name--tables。--tables:枚举指定数据库中的所有表。-T:指定要枚举的表名称。例如,sqlmap.py-u"..."-Ddatabase_name-Ttable_name--columns。--columns:枚举指定表中的所有列。-C:指定要枚举的列名称。例如,sqlmap.py-u"..."-Ddatabase_name-Ttable_name-Ccolumn_name--dump。qlmap.py[选项]-uURL相关知识——2.4自动化SQL注入工具sqlmap简介(2)SQLMap语法:3)数据提取--dump:存储指定数据库表中的数据。可以配合-D、-T、-C参数使用来指定数据库、表和列。--dump-all:存储数据库中的所有数据。qlmap.py[选项]-uURL相关知识——2.4自动化SQL注入工具sqlmap简介(2)SQLMap语法:4)优化和性能--batch:自动选择默认配置,不询问用户。--threads:设置扫描线程的数量,默认为1,最大为10。例如,sqlmap.py-u"..."--threads5。--delay:设置两次请求之间的延迟时间。qlmap.py[选项]-uURL相关知识——2.4自动化SQL注入工具sqlmap简介(2)SQLMap语法:5)检测和绕过--level:设置测试的级别(1-5),级别越高,测试越深入,但也可能导致更多的误报。--risk:设置测试的风险等级(1-3),等级越高,尝试的注入技术越危险,可能导致数据损坏。--tamper:调用特定的脚本来篡改注入数据,以绕过某些安全过滤措施。qlmap.py[选项]-uURL相关知识——2.4自动化SQL注入工具sqlmap简介(2)SQLMap语法:6)其他--os-shell:尝试获取操作系统的shell访问权限(需要数据库具有相应的权限)。--sql-shell:执行指定的SQL命令。--sql-query:执行自定义的SQL查询语句。qlmap.py[选项]-uURL相关知识——2.4自动化SQL注入工具sqlmap简介(3)SQLMap的注入示例检查URL是否存在SQL注入sqlmap.py-u"/vuln.php?id=1"查询当前站点使用的数据库sqlmap.py-u"/vuln.php?id=1"--current-db相关知识——2.4自动化SQL注入工具sqlmap简介(3)SQLMap的注入示例查询当前用户下所有数据库sqlmap.py-u"/vuln.php?id=1"--dbs查询指定数据库中的表名sqlmap.py-u"/vuln.php?id=1"-Ddatabase_name--tables相关知识——2.4自动化SQL注入工具sqlmap简介(3)SQLMap的注入示例查询指定表中的字段名sqlmap.py-u"/vuln.php?id=1"-Ddatabase_name-Ttable_name--columns查询指定字段的内容sqlmap.py-u"/vuln.php?id=1"-Ddatabase_name-Ttable_name-Ccolumn_name--dump03子任务1子任务2-1在WEB页面测试SQL注入“CTF-DEMO”网站基于PHP+MySQL编写的程序。要求对该网站进行SQL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年厦门市妇幼保健院医护人员招聘笔试参考试题及答案详解
- 2026年中国医科大学附属盛京医院滑翔院区医护人员招聘笔试参考题库及答案详解
- 2026年右江民族医学院附属医院医护人员招聘笔试备考题库及答案详解
- (2026版)安全工器具使用管理制度
- 2026年上海中医药大学附属曙光医院医护人员招聘考试备考试题及答案详解
- 2026年十堰人民医院医护人员招聘笔试备考试题及答案详解
- 2026年中国医科大学附属盛京医院滑翔院区医护人员招聘考试参考题库及答案详解
- 2026年中国人民解放军230医院医护人员招聘考试参考试题及答案详解
- 2026年邮政储蓄银行(陕西省分行)人员招聘考试备考题库及答案详解
- 2026年邮政储蓄银行(深圳分行)人员招聘考试参考题库及答案详解
- 2026年西部计划楚雄考试试题及答案
- GD弹性混凝土无缝连接技术-拼缝180802
- 外贸英语函电 课件 第十八章 跨境电商英文写作Cross-border E-commerce English Writing
- GB/T 17824.3-2026规模猪场环境参数及环境管理技术规范
- 江苏省常州市2025-2026学年中考二模化学试题(含答案解析)
- 汇能集团笔试考试题
- 2025浙江金华市武义供销农贸城招聘6人笔试历年常考点试题专练附带答案详解
- GB/T 15000.4-2026标准样品工作导则第4部分:证书、标签和附带文件的内容
- 2026安全生产法完整版
- 医疗设备维修保养及应急预案
- 工厂搬迁技术方案
评论
0/150
提交评论