【SQL注入】小白手把手入门SQL注入1-数据库基础

SQL注入入门与数据库基础
文章目录
  • 前言
  • 什么是数据库
  • 创建数据库操作环境-安装数据库
  • 数据库基础-命令讲解
    • SQL基础命令
    • SQL注入常用语法----SELECT特殊查询用法
    • SQL注入常用语法----WHERE条件用法
    • SQL注入常用语法----CREATE创建库、表后的相关用法
      • 创建库
      • 创建表
    • SQL注入常用语法—特殊表的使用
      • information_schema.SCHEMATA表
      • information_schema.TABLES表

前言

本文以SQL注入为核心,讲解MySQL数据库的基本知识,和在SQL注入过程中可能会用到的部分重要语法。

什么是数据库

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

关系型数据库

关系型数据库是基于关系模型的数据库系统,使用表格(表)来组织数据。数据以行和列的形式存储在表中,每个表代表一个实体或关系,每一行表示一个数据记录,每一列表示记录的属性。关系型数据库使用结构化查询语言(SQL)进行数据的查询和操作。
关系型数据库中表与表之间是有很多复杂的关联关系的
常见的关系型数据库有 MySQL,Oracle, PostgreSQL,SQL Server等。

非关系型数据库

非关系型数据库是一类不使用传统关系模型的数据库系统,它们使用不同的数据模型和存储方式来处理数据。非关系型数据库主要关注可扩展性、灵活性和性能等方面的需求。
常见的关系型数据库有 Redis,MongoDB, Cassandra,Neo4j等。

附: 数据库排名链接

创建数据库操作环境-安装数据库

  1. 以docker为例, 使用docker安装MySQL镜像

docker pull mysql:5.7
image.png

  1. 查看镜像是否安装成功,在仓库中看到刚刚拉取的mysql表明已经安装成功

docker images
image.png

  1. 创建并打开容器

docker run --name sql_inject -d -p 4001:3306 -e MYSQL_ROOT_PASSWORD=123456 5107333e08a8

命令解释:
MYSQL_ROOT_PASSWORD=123456 将数据库密码设置为123456,账号为root
5107333e08a8是镜像ID,用于指定该容器的镜像,镜像ID可以从上一步(docker images)的IMAGE ID中获取

image.png

  1. 查看容器是否创建成功

docker ps
image.png

  1. 入容器环境

docker exec -it sql_inject /bin/bashimage.png

数据库基础-命令讲解

SQL基础命令

登录数据库
mysql -uroot -p
image.png
查看用户
select user,host from mysql.user;

root用户host为%, 代表可以使用远程连接登录,可以使用navicat等数据库工具远程登录操作

image.png
查看所有数据库
show databases;

information_schema库: 是信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息比如数据库名,数据库表,表字段的数据类型与访问权限等。Web渗透过程中用途很大。
mysql 库: MySQL的核心数据库,主要负责存储数据库的用户、权限设置、 关键字等mysql自己需要使用的控制和管理信息。
performance_schema 库: 内存数据库,数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相 比从磁盘上访问能够极大地提高应用的性能。
sys 库: 通过这个数据库数据库,可以查询谁使用了最多的资源 基于IP或是用户。哪张表被访问过最多等等信息。

image.png
查看表
show tables from information_schema;

SCHEMATA 表: 提供了当前MySQL实例中所有的数据库信息,show databases 结果取之此表
TABLES 表:提供了关于数据库中表的信息
COLUMNS 表: 提供了表中的列信息,详细描述了某张表的所有列已经每个列的信息

image.png
注释
第一种注释: -- “杠杠空格”, 注意有个空格!!!
第二种注释: #

SQL注入一般使用第一种, 有时候第二种可能会用不了

查看你某一个数据库中有哪些表
第一种:
首先使用库use mysql;
然后查看表show tables;
image.png
第二种:
show tables from mysql;
image.png

SQL注入常用语法----SELECT特殊查询用法

查看时间
select now();
image.png
查看当前选择的是哪个数据库
select database();
image.png
查看版本
select version();
image.png
查看当前登录数据库的用户
select user();
image.png
查看数据路径
select @@datadir;** **
image.png
查看mysql安装路径
select @@basedir;
image.png
查看mysql安装的系统
select @@version_compile_os;
image.png
查询数据
查所有字段select * from mysql.user;
查某几个比较重要的字段select user,host from mysql.user;
image.png

SQL注入常用语法----WHERE条件用法

where用于指定查询条件
查看用户为root的用户信息
select user,host from mysql.user where user = 'root';
image.png

SQL注入常用语法----CREATE创建库、表后的相关用法

创建库

create database test charset utf8mb4;

test为表名, utf8mb4为字符编码

image.png

创建表

使用刚刚创建的数据库use test
创建一个表create table t1(id INT);

t1为表名, id为字段, INT为字段类型

image.png
添加字段
alter table t1 add name varchar(32);

t1为要修改的表名, name为增加的字段名, varchar(32)是字段类型

image.png
查看添加t1表的字段
desc t1;
image.png
插入数据
insert into t1 value (1,"aa"),(2,"bb"),(3,"cc");
image.png
多条件查询—and
为了方便演示,在数据库test中再插入一条name为aa的数据insert into t1 value (4,"aa")
然后查询name为aa,id为1的数据select * from test.t1 where name = "aa" and id =1;
image.png
多条件查询—or(重要!!!)
and是必须两个条件都成立,or是前后成立一个条件即可,在sql注入里经常使用or 1=1,因为1=1这个条件必然成立,就不用关其他条件是什么了
select * from test.t1 where name = "aa" or 1=1;

因为1=1必然成立,查询语句会直接忽略name=“aa”,因此并没有查询name为aa的数据,而是查询了所有的数据。

image.png
联合查询—union(重要!!!)
union可用于将两个sql语句联合起来,把结果合并在一个结果集里
select * from test.t1 union select 1,2;
image.png
前半部分select* from test.t1查询了t1表的全部数据
后半部分select 1,2可以用于测试该表中有多少个字段,具体用法如下:

使用select * from test.t1 union select 1;会报错,因为select 1的字段只有1个,而select * from test.t1的字段有两个,字段个数不匹配因此会报错。可以通过这种报错进行字段数量的探测,字段数量不一致会报错,字段数量一致则不会报错。
增加字段进行探测,使用select * from test.t1 union select 1,2;探测成功,该t1表的字段暴露

image.png
删除表
drop table t1;
image.png

SQL注入常用语法—特殊表的使用

information_schema.SCHEMATA表

先看下information_schema.SCHEMATA表里有哪些字段:
select * from information_schema.SCHEMATA;
image.png
可以发现show databases;等价于select SCHEMA_NAME from information_schema.SCHEMATA;
image.png

information_schema.TABLES表

先看下information_schema.SCHEMATA表里有哪些字段:
select * from information_schema.TABLES;
image.png
查看指定数据库的表信息
select * from information_schema.TABLES where table_schema = "test";
image.png
查看指定数据库的列信息
select * from information_schema.COLUMNS where table_schema = "test";
image.png

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值