Hack The Box -SQL Injection Fundamentals Module详细讲解中文教程

目录

数据库介绍............................................................................................................... 3

数据库管理系统(DBMS)介绍........................................................................... 3

数据库的类型..................................................................................................... 4

1.1关系型数据库(RDBMS)....................................................................... 4

1.2非关系型数据库(NOSQL).................................................................... 5

MySQL数据库介绍.............................................................................................. 6

1.1SQL语句功能.......................................................................................... 6

1.2命令行工具介绍..................................................................................... 6

1.2.1mycli安装...................................................................................... 6

1.2.2mycli基本用法............................................................................... 7

1.3表的一些字段属性介绍.................................................................... 8

SQL语句基本用法............................................................................................... 9

1.1INSERT语句用法..................................................................................... 9

1.2SELECT语句用法.................................................................................... 10

1.3DROP语句用法...................................................................................... 10

1.4ALTER语句用法..................................................................................... 10

1.5UPDATE语句用法.................................................................................. 11

SQL语句的请求结果.......................................................................................... 11

1.1排序(SORT)结果............................................................................... 11

1.2指定输出记录数................................................................................... 12

1.3WHERE关键字用法................................................................................ 13

1.4LIKE关键字用法.................................................................................... 13

SQL语句运算符................................................................................................. 14

1.1AND(&&)运算符................................................................................ 14

1.2OR(||)运算符.................................................................................... 14

1.3NOT(!)运算符.................................................................................... 15

1.4逻辑运算符在SQL语句中的应用........................................................... 15

1.5运算符优先级....................................................................................... 16

SQL注入........................................................................................................... 17

1.1SQL语句在Web应用中的使用............................................................... 17

1.2SQL注入漏洞的产生.............................................................................. 17

1.3SQL注入的类型..................................................................................... 18

1.4修改SQL语句请求逻辑......................................................................... 19

1.4.1SQL注入点测试........................................................................... 20

1.4.2OR注入....................................................................................... 20

1.5注释符................................................................................................. 22

1.6利用注释符绕过用户登录验证.............................................................. 23

1.7Union关键字讲解.................................................................................. 24

1.8Union 关键字注入................................................................................. 26

Payload构造与利用........................................................................................... 29

1.1枚举数据库.......................................................................................... 29

1.1.1INFORMATION_SCHEMA 数据库讲解............................................ 29

1.1.2 SCHEMATA表讲解....................................................................... 30

1.2读文件................................................................................................. 32

1.2.1权限等级.................................................................................... 33

1.2.2LOAD_FILE................................................................................... 34

1.3写文件................................................................................................. 35

1.3.1判断是否拥有写文件权限............................................................ 35

1.3.2写入一个web shell文件.............................................................. 36

实战训练................................................................................................................. 37

数据库介绍

在我们开始学习SQL注入技术之前,我们需要了解我们是怎样来操作数据库的,我们是通过SQL语句来操作数据库,一个web应用是通过后端数据库存储数据,然后web应用根据用户的相关操作来执行相应的SQL语句获取数据库中的数据或者将数据写入数据库中,例如:用户的登录和新用户的注册

数据库的类型有很多,每种数据库它都有自己的一套语法,并且随着数据库的数据增加,读写数据就会变慢,这样Web应用的执行效率就大大降低了,这就导致我们需要采用一个数据库管理系统(DBMS)来对数据库进行管理,来提高Web应用的读写效率

数据库管理系统(DBMS)介绍

数据库管理系统是用来创建和管理数据库的,随着时间的发展,更多的数据库管理系统被设计出来,例如,关系数据库管理系统(RDMBS),非关系数据库管理系统(NoSQL)等

那我们如何操作数据库管理系统,这里我们有多种方法来操作数据库管理系统,例如:

命令行工具,一些图形化的管理工具,应用程序接口(API)等

基本数据库管理系统(DBMS)的功能,如下:

并发性(Concurrency): 在生产环境下,也许同时有多个用户操作这个数据库,DBMS 确保这些并发交互成功而不会损坏或丢失任何数据

一致性(Consistency):大量的并发交互,DBMS 需要确保数据在整个数据库中保持一致和有效

安全性(Security): 通过用户验证的用户只能以他拥有的权限来操作DBMS,这就防止了未验证的非法用户来操纵

可靠性(Reliability): 在数据丢失的情况下,数据库备份很容易恢复到之前状态

SQL语句:用户与数据库进行交互的命令,用户通过SQL语句操作数据库执行相应操作

通常用户在一个网站查看一些内容时,网站是如何从后端数据库中获取数据返回给用户的,基本过程如下图所示:

数据库的类型

一般的数据库分为关系型数据库(RDBMS)和非关系型数据库(NOSQL),关系型数据库通过SQL语句与用户交互,非关系型数据库通过一些特定的方法与用户交互

1.1关系型数据库(RDBMS)

顾名思义,就是这种数据库里面创建的表之间可以相互关联,我们只需输入一个信息,就能获取和它相关联的所有信息,打个比方来说,我们需要存储一个客户信息的数据,我们可以创建一张表只记录这个客户的基本信息,例如:姓名,年龄,性别,联系方式,然后再创建一张表记录客户的详细购买的产品信息,关系型数据库就能很好的把这两张表关联起来,我们查询的时候只需输入用户名,那么这个用户的所有信息就会被查询出来,表与表之间是通过key(主键)来实现关联,这样所有的记录就能相互联系,便于用户查询

关系数据库的种类比较多,

例如:”MicrosoftAccess”,”MySQL”,”SQL Server”,”Oracle”,”PostgreSQL”等等

关系型数据库是由表组成,我们查询数据,其实就是对表的操作,表是由字段(columns)组成,例如:id,username,first_name,last_name等,通常id字段作为一张表的key(主键),通过它和其他表进行关联,如下图:

Users :

id

username

First_name

Last_name

1

admin

admin

admin

2

test

test

test

Posts:

id

User_id

date

content

1

1

01-01-2022

xxxxxx

2

2

02-01-2022

xxxxxx

我们把users表的id字段与posts表的user_id字段关联起来,例如,当我们查询admin用户时,我们就能获取到他的所有相关信息,users表和posts中的信息

1.2非关系型数据库(NOSQL)

非关系型数据库通过存储模型来存储数据,不同的数据存储数据模型不一样,非关系型数据库相对于关系型数据库数据存储方式更加的灵活,具有可拓展性,所以,当我们不好定义一个数据结构来存储数据的时候,我们就可以用非关系型数据库来存储我们的数据,NOSQL通常有几种存储模型,如下:

Key-Value存储模型

Document-Based存储模型

Wide-Column存储模型

Graph存储模型

这些数据存储模型,区别在与存储数据的方式不一样,例如,Key-Value存储模型,通常将数据存储为JSON或者XML结构,如下:

Posts:

JSON结构:

{

  "100001": {

    "date": "01-01-2022",

    "content": "xxxxxxx"

  },

  "100002": {

    "date": "02-01-2022",

    "content": "xxxxxxx"

  },

  "100003": {

    "date": "03-01-2022",

    "content": "xxxxxxx"

  }

}

Tips:JSON结构是以{‘key’:’value’}结构这样一对一对的存储数据的,一个key对应一个value,常用的NOSQL是MongoDB

MySQL数据库介绍

本章我们以MySQL

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

renu08

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

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

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

打赏作者

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

抵扣说明:

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

余额充值