SQL注入基础相关概念

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: SQL注入基础相关概念

一、什么是SQL注入


SQL注入是指Web应用程序对用户输入的数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数带入数据库查询,那么攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。


开发人员可以使用动态SQL语句创建通用、灵活的应用。动态SQL语句是在执行过程中构造的,它根据不同的条件产生不同的SQL语句。(不同字段和不同条件)


0a2653c851af460fa595bd959398a8f1.png


这里的参数user_id是可控的,且带入数据库查询,所以用户可以任意拼接SQL语句进行攻击。


二、 SQL注入的原理


1. 参数用户可控


2. 参数带入数据库查询



三、判断是否存在SQL注入


1、单引号判断法,正常输出


0eacb84100b54626af849e6b562bf92a.png


2、在1后面输入单引号提交,报错,存在SQL注入漏洞


2d65d23f6d4748949b924e4057485923.png


原因:无论字符型还是整型都会因为单引号个数不匹配而报错!



四、 SQL注入漏洞的两种类型


1. 数字型


2. 字符型


如果是数字型,1=2肯定会报错,由于没有报错,说明该注入类型是字符型


4cebaac233b3433da32a72337a77fc60.png6de278e6d6694ce5bb08e7e842b7e74b.png


五、构造闭合语句


根据报错内容,知道多了一个单引号


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1''' at line 1


1、构造语句:1' and '1'='1


最后一个1少输入一个单引号,正好和原来的闭合


0a2653c851af460fa595bd959398a8f1.png


2、构造语句:1' and 1=1#


#符号可以最后的引号屏蔽掉


0eacb84100b54626af849e6b562bf92a.png


3、构造语句:1' and 1=1--


"-- ",后面是有一个空格的,同样也可以屏蔽后面的语句


--+


%23


2d65d23f6d4748949b924e4057485923.png


六、MySQL注入相关的知识点:


MySQL 5.0之后,MySQL默认在数据库中存放一个“information_schema”的数据库,该库中存放着这三张表:


1. SCHEMATA:存储该用户创建的所有数据库的库名,记录库名的字段为


SCHEMATA_NAME。


2. TABLES:存储该用户创建的所有数据库的库名和表名,记录库名的字段为


TABLE_SCHEMA,记录表名的字段为TABLE_NAME。


3. COLUMNS:存储该用户创建的所有数据库的库名、表名、字段名。记录库名


的字段为TABLE_SCHEMA,记录表名的字段为TABLE_NAME,记录字段名的字


段为COLUMN_NAME。


limit:


limit m,n


m:记录开始的位置,0代表第一条记录


n:取n条记录


limit 0,2:第一条记录开始,取两条记录!


常用的函数和属性:


version():查询MySQL的版本


database():查询数据库名


user():查询使用MySQL的用户


@@datadir:查询数据库物理路径


@@version:查询MySQL的版本


七、MySQL的4种注释:


1. # 我是注释2. -- 我是注释 (--和我是注释之间有空格)


3. /*我是注释*/


以上注释都可以放在SQL语句的任意位置中!!!


4. /*!code*/ (内联注释)


内联注释可以用于整个SQL语句中,用来执行SQL语句!


例如:userid=1/*! UNION*//*! SELELCT*/1,2,3,4


文章来源于网络,如有侵权,请联系删除


禁止非法,后果自负


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
25天前
|
SQL Perl
PL/SQL编程基本概念
PL/SQL编程基本概念
13 0
|
1月前
|
SQL 监控 安全
SQL注入的实现原理以及防止
SQL注入的实现原理以及防止
|
2月前
|
SQL 数据库
20、绕过去除and、or、union select、空格的sql注入
20、绕过去除and、or、union select、空格的sql注入
30 0
|
2月前
|
SQL 数据库
小课堂 -- 绕过去除特殊字符的sql注入
小课堂 -- 绕过去除特殊字符的sql注入
21 0
|
2月前
|
SQL Java 数据库连接
[SQL]SQL注入与SQL执行过程(基于JDBC)
[SQL]SQL注入与SQL执行过程(基于JDBC)
50 0
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL进阶之路丨第十四篇】一文带你精通MySQL重复数据及SQL注入
【MySQL进阶之路丨第十四篇】一文带你精通MySQL重复数据及SQL注入
46 0
|
1月前
|
SQL Java 应用服务中间件
Java项目防止SQL注入的四种方案
Java项目防止SQL注入的四种方案
37 0
|
2月前
|
SQL 安全 关系型数据库
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞,品相还不错,可执行任意 SQL 语句。 总之,吃了一惊,一个防 SQL 注入的工具居然也有 SQL 注入漏洞。 请看这段代码
413 1
|
2月前
|
SQL 存储 关系型数据库
sql数据库的相关概念与底层介绍
sql数据库的相关概念与底层介绍
43 0
|
1天前
|
SQL 安全 Go
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
在Python Web开发中,确保应用安全至关重要,主要防范SQL注入、XSS和CSRF攻击。措施包括:使用参数化查询或ORM防止SQL注入;过滤与转义用户输入抵御XSS;添加CSRF令牌抵挡CSRF;启用HTTPS保障数据传输安全;实现强身份验证和授权系统;智能处理错误信息;定期更新及审计以修复漏洞;严格输入验证;并培训开发者提升安全意识。持续关注和改进是保证安全的关键。
9 0