SQL 必知必会
陈旸
清华大学计算机博士
73338 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
第一章:SQL语法基础篇 (19讲)
SQL 必知必会
15
15
1.0x
00:00/00:00
登录|注册

37丨SQL注入:你的SQL是如何被注入的?

查询heros数据表中所有字段名称
查询wucai数据库中所有数据表
获取MySQL中的所有数据库名称
获取当前数据库和用户信息
查询heros数据表中所有字段名称
查询wucai数据库中所有数据表
获取MySQL中的所有数据库名称
获取当前数据库和用户信息
判断查询语句的字段数
配置sqli-labs及MySQL参数
配置PHP、Apache环境
下载sqli-labs
使用第三方工具进行检测
关闭生产环境中的错误提示信息
避免直接拼接查询
使用编程框架降低风险
对用户提交内容进行验证
使用SQLmap工具进行SQL注入检测
第一个SQL注入挑战
搭建sqli-labs注入环境
数据泄露、修改或删除
服务器认为是正常SQL语句执行
非法SQL命令插入URL或Web表单
防范
实例
原理
SQL注入

该思维导图由 AI 生成,仅供参考

我们之前已经讲解了 SQL 的使用及优化,正常的 SQL 调用可以帮我们从数据库中获取想要的数据,然而我们构建的 Web 应用是个应用程序,本身也可能存在安全漏洞,如果不加以注意,就会出现 Web 安全的隐患,比如通过非正常的方式注入 SQL。
在过去的几年中,我们也能经常看到用户信息被泄露,出现这种情况,很大程度上和 SQL 注入有关。所以了解 SQL 注入的原理以及防范还是非常有必要的。
今天我们就通过一个简单的练习看下 SQL 注入的过程是怎样的,内容主要包括以下几个部分:
SQL 注入的原理。为什么用户可以通过 URL 请求或者提交 Web 表单的方式提交非法 SQL 命令,从而访问数据库?
如何使用 sqli-labs 注入平台进行第一个 SQL 注入实验?
如何使用 SQLmap 完成 SQL 注入检测?

SQL 注入的原理

SQL 注入也叫作 SQL Injection,它指的是将非法的 SQL 命令插入到 URL 或者 Web 表单中进行请求,而这些请求被服务器认为是正常的 SQL 语句从而进行执行。也就是说,如果我们想要进行 SQL 注入,可以将想要执行的 SQL 代码隐藏在输入的信息中,而机器无法识别出来这些内容是用户信息,还是 SQL 代码,在后台处理过程中,这些输入的 SQL 语句会显现出来并执行,从而导致数据泄露,甚至被更改或删除。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

SQL注入是一种常见的Web应用程序安全漏洞,通过在URL或Web表单中插入非法的SQL命令,攻击者可以获取数据库中的数据、甚至进行更改或删除操作。本文通过一个简单的练习,详细介绍了SQL注入的原理、使用sqli-labs注入平台进行实验以及使用SQLmap完成SQL注入检测的过程。文章首先解释了SQL注入的原理,即通过将SQL代码隐藏在输入信息中,使得服务器在处理过程中执行了非法的SQL命令。接着,通过搭建sqli-labs注入环境并进行实例操作,演示了如何利用UNION操作符、GROUP_CONCAT函数等手段来获取数据库名称、数据表名称、字段名等敏感信息。通过这些实例,读者可以了解SQL注入的危害性以及如何利用这种漏洞获取数据库信息。文章内容详实,适合初学者快速了解SQL注入的原理和实际操作,同时也提供了相关工具和平台供读者进行实践。 文章还介绍了使用SQLmap工具进行SQL注入检测的过程,包括获取当前数据库和用户信息、获取MySQL中的所有数据库名称、查询指定数据库中所有数据表、查询指定数据表中所有字段名称以及查询指定数据表中的英雄信息。通过这些实例,读者可以了解如何使用SQLmap工具自动完成SQL注入,以及在日常工作中如何对用户提交的内容进行验证,以防止SQL注入。同时,文章强调了代码规范性对于Web安全的重要性,提出了关闭生产环境中的错误提示信息以减少SQL注入风险的建议,并介绍了使用第三方工具如SQLmap来增强Web安全性的方法。 总之,本文通过实例操作和技术建议,帮助读者快速了解SQL注入的原理、实际操作以及防范措施,适合初学者和从业人员参考学习。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《SQL 必知必会》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • 墨禾
    不规范的代码,比如拼接sql 却没有进行参数化验证,或者在前端验证完参数就以为是安全的输入,这些都很容易被绕过,导致sql注入。 防注入的方法: 1 参数化验证。不同的语言都应该封装了这种方法,比如说c#,java的sqlparameter . 2 对参数进行过滤。严格的白名单进行参数过滤。

    作者回复: 对的

    2019-09-19
    3
    16
  • zhxxmu
    在后端程序中采用参数化查询方式进行查询

    作者回复: 对 这是一种避免的方式

    2019-11-21
    3
  • 蒙开强
    老师,你好,目前很少使用get方式提交了,差不多用post,而且输入参数都会校验的

    作者回复: 嗯 这篇文章讲的是一些基础的操作,目前SQL注入的攻防已经越来越高阶的

    2019-09-18
    2
    3
  • 许童童
    涨知识了,谢谢老师的分享。

    作者回复: 加油

    2019-09-18
    1
  • 骑行的掌柜J
    https://blog.csdn.net/weixin_41013322/article/details/106290783 又记录了一下在这篇SQL注入过程中需要注意的地方 希望对各位有帮助😀
    2020-05-24
    1
    1
  • 刘桢
    学到了
    2020-05-15
    1
  • Geek_1c165d
    请问老师url后面的--+作用是啥?
    2020-01-08
    1
    1
  • Geek_186f56
    涨知识了
    2022-09-24归属地:上海
  • 👽
    参数化查询,? 代替掉需要执行的sql变量
    2021-11-30
  • Frank
    前段用户输入的所有数据都要做验证。
    2020-09-02
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部