首页 > 数据库 >【笔记】从0开始的sql注入漏洞学习

【笔记】从0开始的sql注入漏洞学习

时间:2024-07-19 17:45:58浏览次数:11  
标签:name 数据库 笔记 漏洞 score result sql id select

【笔记】从0开始的sql注入漏洞学习

SQL数据库操作基础

第一部分:MYSQL(MariaDB)基础操作

1.连接数据库:

mysql -u root -p

-u 输入登录用户名

-p 输入密码(这个没有密码)

image-20240719163245111

2.显示系统中所有数据库的名称

show databases;

image-20240719163608084

3.新建数据库student

create database student;

使用以下命令查看结果:

show databases;

image-20240719163750741

4.使用数据库student

use student;

5.在数据库student中创建表result

create table result(id int(8),name varchar(20),city varchar(20),score int(5));
id name city score

6.在表result中增加数据

insert into result(id,name,city,score) values(1,"wang","beijing",75);

insert into result(id,name,city,score) values(3,"li","shanghai",80);

insert into result(id,name,city,score) values(5,"chen","fuzhou",70);

insert into result(id,name,city,score) values(2,"zhou","xian",90);

insert into result(id,name,city,score) values(7,"han","guangzhou",65);

使用以下命令查看结果:

select * from result;

image-20240719164920156

7.在表result中删除1条数据

使用以下命令删除id=7的数据

delete from result where id=7;

使用以下命令查看结果

select * from result;

image-20240719165111274

8.修改表result中的1条数据

使用以下命令可以修改id=5的数据,将其score设置为60:

update result set score=60 where id=5;

使用以下命令查看结果

select * from result;

image-20240719165312551

9.查询表result中的数据

select * from result;
//查询表中所有字段
select name,score from result;
//查询表中的name和score字段
select score from result where name="li";
//查询name为li的学生的分数

第二部分:MySQL(MariaDB)进阶操作

1.order by的用法

(1)将result表中的数据按照分数(score)从高到低进行排序:

select * from result order by score desc;

其中,desc表示降序(递减);如果从低到高(升序)进行排列,则可以将desc换成asc;如果不加此参数,默认情况下按升序方式排列。

image.png

(2)分别尝试以下命令:

select id,name,score from result order by 1;

image.png

正常显示以id升序排列的结果。

select id,name,score from result order by 2;

image.png

正常显示以name升序排列的结果!

select id,name,score from result order by 3;

image.png

正常显示以score升序排列的结果!

select id,name,score from result order by 4;

image.png

报错!

从以上结果可以总结出,对于以下命令:

select c1,c2,...,cn from result order by M;

order by后面的数字(M)必须小于或等于n(数据库查询的字段数),才能正常显示。如果M>n,数据库就会报错。可以利用这个特点判断数据库查询的字段数。

2.limit的用法

基本格式为:

limit M,N
//表示从第M+1条数据开始,顺序往下查询N条数据

limit M
//表示查询前M条数据

尝试执行以下两条命令:

select * from result limit 0,2;
//查询表中的前2条数据

image.png

select id,name,score from result limit 1,3;
//从第2条数据起,往下查询3条数据的id、name和score字段

image.png

3.union select的用法

select * from result union select 1,2,3,4;

此语句的查询结果,即是select * from result和select 1,2,3,4查询结果的拼接,名为联合查询。

image.png

(2)尝试执行以下3条语句:

select id,name,score from result union select 1,2,3;

image.png

正常显示!

select id,name,score from result union select 1,2;

image.png

列数不一致,于是报错!

select id,name,score from result union select 1,2,3,4;

image.png

列数不一致,报错!

从以上结果可以总结,对于以下命令:

select c1,c2,...,cn from result union select d1,d2,...dm;

后半句union select查询的字段数(m)必须与前半句select查询的字段数(n)相等,数据库才能正常显示结果。与order by相似,可以利用这个特点判断数据库查询的字段数。

(3)尝试执行下列语句

select id,city from result where id=1 and 1=2 union select name,score from result;

image.png

从以上结果可以总结,在已知字段名的情况下,攻击者只要将该字段置于任何能够显示的位置,就可以暴露该字段的值。

4.union select结合information_schema数据库

MySQL(MariaDB)5.5以上版本自带information_schema数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名、数据库的表、表栏的数据类型与访问权限等。可以把information_schema数据库看作MySQL(MariaDB)的“目录”!

(1)尝试执行以下两条语句:

show databases;

select schema_name from information_schema.schemata;  

image.png

两条语句执行结果相同,说明information_schema数据库保存着关于MySQL服务器所维护的数据库名的信息。

(2)尝试执行以下两组语句:

第一组:

use student;

show tables;

第二组:

select table_name from information_schema.tables where table_schema='student';

image.png

两组命令执行结果相同,说明information_schema数据库保存着关于MySQL服务器所维护的数据库的表的信息!

标签:name,数据库,笔记,漏洞,score,result,sql,id,select
From: https://www.cnblogs.com/handsomexuejian/p/18311948

相关文章

  • 【SQL】晨光咖啡馆,过滤聚合的微妙碰撞
    【SQL】晨光咖啡馆,过滤聚合的微妙碰撞  这天,小悦懒洋洋地步入办公楼下的咖啡馆,意外地与一位男子不期而遇。他显然因前一晚的辛勤工作而略显疲惫,却仍选择早到此地,寻找一丝宁静与放松。他叫逸尘,身姿挺拔,衣着简约而不失格调,晨光下更显英俊不凡,吸引了周遭的目光。两人仿佛心有灵......
  • mysql联合索引优化
    【MySQL】之联合索引与最左匹配原则王廷云的博客已于2023-12-1009:48:32修改阅读量2k收藏24点赞数28分类专栏:MySQL文章标签:mysql数据库版权MySQL专栏收录该内容27篇文章3订阅订阅专栏前言:最左匹配原则在我们MySQL开发过程中和面试过程中经常遇到,为了加深印象和......
  • 基于Java和MySQL的数据库优化技术
    基于Java和MySQL的数据库优化技术大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何基于Java和MySQL进行数据库优化,提升系统的性能和稳定性。我们将从查询优化、索引使用、事务管理以及连接池配置几个方面来介绍具体的优化技术。1.查询......
  • 【C++】学习笔记——AVL树
    文章目录十六、AVL树1.AVL树的概念2.AVL树节点的定义3.AVL树的插入4.AVL树的旋转5.AVL树的验证6.完整代码+测试7.AVL树的性能未完待续十六、AVL树1.AVL树的概念二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素......
  • java比较mysql两个数据库中差异
    java对比两个库之间差异packagecom.ruoyi.shht;importjava.io.File;importjava.io.FileOutputStream;importjava.io.OutputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;importjava.tex......
  • SQL Prompt安装不上(报错:1603)
     一开始一直跟踪服务看到是RedGateClient运行不起来(报错信息代码是这个1603),后面查询到官网:https://productsupport.red-gate.com/hc/en-us/articles/360015772598-Redgate-Client-Service-fails-to-start使用管理员运行CMD执行:netshhttpaddiplisten127.0.0.1 之后再......
  • RSA加解密笔记
        前文介绍了SM国产的对称加密算法介绍,这里记录一下RSA非对称加密情况,不太情况贸然上手还是有一些坑,密钥位数分为512,1024,2048,4096之类,公钥,私钥成对出现,一般文本之类,如请求参数而言,公钥加密,私钥解密,如果是证书,情况会稍微不同,这里不展开记录,比如:双方对接数据的时候......
  • 第十一天笔记(MySQL单表)
    ==========================================orderby排序(1)降序(大到小)orderbydesc案例:select*fromhzorderbyiddesc;(2)升序(小到大)asc或不写案例:select*fromhzorderbyidasc;select*fromhzorderbyid;(3)二次排序案例:select......
  • Day44.MySQL安装及主要文件介绍
    1.MySQL下载网址https://www.mysql.com/2.下载流程:         ......
  • 分享Flutter 教程笔记收集整理
    01. 初学者须知02. 初识Flutter03. Flutter开发环境搭建Windows版04. 创建Flutter项目05. Flutter编写一个HelloWorld程序06. FlutterTextWidget文本组件的使用07. FlutterContainer容器组件的使用08. FlutterImage图片组件的使用09. FlutterL......