SQL 注入原理分析(学习笔记)

SQL 注入原理分析(学习笔记)

1.SQL语言介绍

​ SQL 全称是“结构化查询语言( Structured Query Language)”, 最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEMR开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来, SQL语言得到了广泛的应用。

​ 结构化查询语言SQL是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是一个通用的功能极强的关系数据库标准语言。在SQL语言中不需要告诉SQL如何访问数据库,只要告诉SQL需要数据库做什么。

2.SQL注入产生原因

​ 在现在网络技术于信息技术高速发展的时代,越来越多程序编写应用于B/S模式,而BS模式建立在互联网上,对安全的控制能力较弱,由于开发人员的水平和经验参差不齐,相当一部分的程序员编写代码没有对用户输入的数据或者是页面中所携带的信息进行必要的合法性判断。攻击者利用这个机会提交一段数据库查询代码,根据程序返回的结果,就可以获得一些数据库信息。

3.SQL注入核心原理

​ SQL注入(SQLi)是一种注入攻击,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。

​ SQL注入漏洞可能会影响使用SQL数据库(如MySQL,Oracle,SQL Server或其他)的任何网站或Web应用程序。犯罪分子可能会利用它来未经授权访问用户的敏感数据:客户信息,个人数据,商业机密,知识产权等。SQL注入攻击是最古老,最流行,最危险的Web应用程序漏洞之一。

4.四程WEB框架

1

ps.灵活的SQL查询语句+用户输入的数据代入了SQL语句=用户直接操作数据库—>SQL注入漏洞

5.用户输入可控,代码对用户输入进行了对接,带入SQL语句,产生SQL注入漏洞

eg:http://xxx.com/index.php?id=1 UNION SELECT 1,version()#

正常输入 用户输入可自由控制

image-20211001134230447

select id,location from jobs where id=1——返回id为1的location

select id,location from jobs where id =1 union select 1,version()#

——返回id为1的location和数据库文本

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2023 00hello00

请我喝杯咖啡吧~

支付宝
微信