学习笔记——SQL(一)

本文详细探讨SQL注入的概念、产生原因,通过实例演示如何利用注释符绕过防护,以及提供登录案例和验证方法。深入讲解Mysql数据结构和SQL增删改查操作,同时列出常见函数。最后,给出防范SQL注入的建议和实用技巧。
摘要由CSDN通过智能技术生成


一、SQL

1.简介

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

2.语句结构

参考:sql语句大全(详细)

二、SQL注入

1.概念

SQL注入即是指web应用程序对用户输入数据的合法性没有判断过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息

2.产生原因

程序开发过程中,由于不重视书写规范,对sql关键字未进行完全过滤,导致客户端可以通过POST或GET提交sql语句到服务器端正常运行

3.SQL注入——注释符

注释符:在Mysql 中常见的注释符表达式:#或–空格或/**/
内联注释:/*!SQL语句 */
只有Mysql可以识别,常用来绕过WAF
例:select * from articles where id = id
使用内联注释注入:
select * from articles where id = -1 /*!union*/ /*!select*/ 1,2,3,4

4.SQL注入——登录案例讲解

登录SQL语句:
select * from admin where username = '用户输入的用户名' and password = '用户输入的密码'
用户输入的内容可由用户自行控制,例如可以输入 ’ or 1=1 --空格
SQL语句:
select * from admin where username = ' ' or 1=1 -- ' and password = '用户输入的密码'
其中or 1=1 永远为真, --注释后边内容不再执行,因此SQL语句执行会返回admin表中的所有内容。

5.SQL注入——SQL注入验证方法

SQL注入验证:

1、单引号 ’
2、 and 1=1
3、 and 1=2

如果页面中Mysql报错,证明该页面存在SQL注入漏洞。

6.Mysql 5.x数据结构

在Mysql 5.0以上的版本中,为了方便管理,默认定义了information_schema数据库,用来存储数据库元信息。其中具有表schemata(数据库名)、tables(表名)、columns(列名或字段名)。
在schemata表中,schema_name字段用来存储数据库名。
在tables表中,table_schema和table_name分别用来存储数据库名和表名。
在columns表中,table_schema(数据库名)、table_name(表名)、column_name(字段名)
利用phpmyadmin for MySQL查看结构
先简单整理一遍,之后会单独开出一篇学习笔记来介绍Mysql数据库。

7. SQL注入——SQL增删改查

show 命令
create 命令
use 命令
select 列名称 from 表名称 where 字段1 = ‘条件1’ and 字段2 = ‘条件2’;
update 表名称 set 列名称 = 新值 where 列名称 = 某值;
insert into table_name (列1, 列2,…) values (值1, 值2,…);
delete from 表名称 where 列名称 = 值;

8.Mysql常见函数

user():查看当前Mysql登录用户名
database():查看当前使用Mysql数据库名
version():查看当前Mysql版本
拓展limit关键字 limit m,n 从m行开始,到m+n行。

参考文章:sql语句大全(详细) MySQL数据库—SQL汇总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值