sql注入基本概念

死在山野的风里,活在自由的梦里

MYSQL

基本语法

登录

mysql -h ip -u user -p pass

基本操作

show databases;                         查看数据库

create database test;                   新建数据库test

use test;                               使用数据库test

show tables;                            查看表

select * from admin;                    查看admin表的数据

select * from admin where id=1;         查看admin表id=1的数据

union合并查询2个特性:

1.前面查询的语句和后面的查询语句结果互不干扰!所以就算前面一个没查到,也会输出后面那个查到的

2.前面的查询语句的字段数量和后面的查询语句字段数量要一致。比如前面查id,后面就不能写*,要写pass这种单个的字段

order by 排序

输出按id从小到大排序
select * from admin order by id

可用于猜解表的列数

输出按第一列从小到大排序
select * from admin order by 1
当输入的数字大于列数,就会报错

三个重要的信息

  1. information_schema库:

(1)show databases; 的时候会出现information_schema库

(2)use information_schema;进入

(3)show tables;

​ (a) 找到SCHMATA,use SCHMATA; 进入

select * from SCHMATA; 
其中SCHEMA_NAME字段就是当前mysql所有库名

在这里插入图片描述

​ (b) 找到TABLE,use TABLE; 进入

select table_name from TABLES; 
table_name就是当前mysql所有表

在这里插入图片描述

​ © 找到COLUMNS,用use COLUMNS; 进入

select columns_name from COLUMNS; 

columns_name就是当前mysql所有列的标题,比如id

Sql Server

select * from sysdatabases;                查看数据库

use test;                                  使用数据库

select * from sysobjects where xtype='U';  查看用户表

select * from sysobjects where xtype='S';  查看系统表
<think>嗯,用户想了解SQL注入的概念和攻击原理。首先,我需要回忆一下相关的知识。根据引用[2],SQL注入攻击是因为后台的SQL语句是拼接用户提交的参数,如果用户提交的参数中掺杂了SQL关键字或特殊符号,就会改变原语句的语义。比如在不知道密码的情况下登录,甚至不需要用户名和密码也能登录。这说明攻击者通过输入恶意内容来干扰正常的SQL查询结构。 然后引用[3]提到,SQL注入利用了Web应用对SQL语句处理不当的情况,攻击者插入恶意代码,从而控制或欺骗数据库。这可能导致未授权数据访问或完全控制数据库。比如在登录表单中输入' OR '1'='1,这样构成的SQL语句可能会绕过身份验证。 引用[5]中的二次注入例子也很重要,虽然用户可能暂时没问到,但说明注入不仅限于即时输入,还可能通过存储的数据后续触发。比如插入时转义了单引号,但查询时直接从数据库取出未转义的数据导致注入。 接下来需要组织这些信息,用简单易懂的中文解释概念和原理。要分点说明,结构清晰。用户可能对技术细节不太熟悉,所以需要举例说明,比如那个经典的OR '1'='1的例子。同时要引用相关的引用来源,比如在解释原因时引用[2][3]。 还要注意用户要求中的格式,比如数学表达式用$...$,但这里可能用不上。生成的问题要相关,比如攻击方式、危害、防护方法,以及二次注入等。确保问题覆盖用户可能想进一步了解的方面。</think>### SQL注入的概念与攻击原理 #### 1. 基本概念 **SQL注入**(SQL Injection)是一种针对数据库的网络安全攻击方式,攻击者通过在用户输入中嵌入恶意SQL代码,欺骗后端数据库执行非预期的操作。例如,攻击者可能通过输入`' OR '1'='1`绕过登录验证,导致无需密码即可登录系统[^2][^3]。 #### 2. 攻击原理 SQL注入的核心原理是**利用应用程序未对用户输入进行有效过滤**,直接将输入拼接到SQL语句中执行。例如: - 正常登录查询语句: $$SELECT * FROM users WHERE username='[用户输入]' AND password='[用户输入]'$$ - 攻击者输入用户名`admin' --`,密码任意值,则语句变为: $$SELECT * FROM users WHERE username='admin' --' AND password='xxx'$$ 其中`--`是SQL注释符,后续条件被忽略,直接以管理员身份登录[^2][^4]。 #### 3. 攻击危害 - **未授权数据访问**:窃取敏感数据(如用户信息、密码)。 - **数据篡改或删除**:修改或清空数据库内容。 - **权限提升**:通过执行系统命令控制服务器[^4]。 #### 4. 典型攻击方式 1. **联合查询注入**:通过`UNION`合并恶意查询,获取其他表数据。 示例:`' UNION SELECT credit_card FROM payments --` 2. **布尔盲注**:根据页面返回的真/假状态推测数据内容。 示例:`' AND (SELECT SUBSTRING(password,1,1) FROM users)='a' --` 3. **二次注入**:恶意数据先被存储,后续使用时触发注入(如从数据库读取未过滤的数据)[^5]。 #### 5. 防御措施 - **参数化查询**:使用预编译语句(如PHP的PDO、Java的PreparedStatement),避免直接拼接SQL。 - **输入过滤与转义**:对特殊字符(如`'`、`#`、`--`)进行转义处理。 - **最小权限原则**:限制数据库账户权限,避免执行高危操作[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小阿宁的猫猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值