IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 1-3DML语言与INsert注入逻辑 -> 正文阅读

[大数据]1-3DML语言与INsert注入逻辑

1.什么DML?

DML:数据操作语言(data manipulation language)

功能:主要是对表、视图等对象进行查询、插入、更新和删除操作,如果我们没有特殊的说明,主要是对表的操作

包括:

SELECT 查询

INSERT 插入

UPDATE 更新

DELETE 删除

实战演示

打开kali的终端,输入mysql -uroot,访问mysql数据库

在这里插入图片描述

我们这篇文章演示要用到一个示例的数据库,我们自己创一个数据库。create database hxf default charset utf8;

在这里插入图片描述

show databases;查看一下创建的结果

在这里插入图片描述

使用创建的数据库,use hxf;

在这里插入图片描述

创建一张表,create table users(uid int,uname varchar(32),password int(11),mobile bigint(20),isadmin tinyint(4),blog varchar(100));

在这里插入图片描述

查看一下创建表的结构,show create table users;

在这里插入图片描述

这样我们用到的表结构就创建完闭了

我们看到这个表有六个字段,我们先看一下这个表有哪些记录,以便验证一下。select * from users;

在这里插入图片描述

为空,没有,毕竟是我们刚刚建的

那么如何给users插入一行记录呢

插入我们使用命令insert into,插入到那个表呢,我们输入具体的表名,users,插入users我们还要告诉users具体那个字段需要插入值。我们打uid、uname、password,我们按照顺序都写出来,mobile、isadmin、blog,这是告诉users哪些字段需要插入值,需要插入值的时候,我们输入values,来说明,在users后面的字段中,它的值是怎么样的,因此我们用括号括起来,id对应的值是10015,uname对应的值是Michae115,password我们这里使用123,这个手机号我们使用12345,是否是管理员,我们是的,是1,blog我们保存的是博客,比如blog.hxf,这只是一个示例,然后我们回车。insert into users(uid,uname,password,mobile,isadmin,blog)

->values(10015,‘Michae115’,‘123’,‘12345’,1,‘http://blog.hxf’);

在这里插入图片描述

这个时候返回OK,有一行受影响,这说明插入成功,我们还可以通过select *来查看一下。select * from users;

在这里插入图片描述

10015这个记录,就是我们刚刚插入进去的,这种情况,插入使用insert into,插入那张表呢,需要填入users,紧接着insert into后面,users后面使用括号括起来,说明需要对那些字段进行插入,字段与字段之间使用逗号分割,我们在users后边的字段填入一些值,这个值使用values,values后边的值和users后边的字段,它的值是一一对应的,我们看到,我们插入的时候,每个字段,都插入了值。像这种情况,每个字段都插入了值,那users后面的就可以不写,这种情况,我们在插入一条,看一下,把15改成16,其它的不变回车。insert into users values(10016,‘Michae116’,‘123’,‘12345’,1,‘http://blog.hxf’);

在这里插入图片描述

我们看一下这种情况,select * from users;

在这里插入图片描述

这个时候就插入了Michae116的情况

第三种情况,我们可以插入少量的情况,我们插入的时候,并不一定所有的字段都需要插入,我们只需要插入两个字段,比如uid和uname,其它的我们删除掉,这个时候我们只需要填入两个字段,值中我们对应的输入两个值,回车。insert into users(uid,uname) values(10015,‘Michae115’);

在这里插入图片描述

这个时候,我们查看一下。select * from users;

在这里插入图片描述

这个值,同样的已经插进去了,其它值如果没有赋值,那么默认就是null值。同时,我们还可以通过select办法,select是指直接输入值,id是10017,uname是michael10017,这种办法可以在程序中,把变量变成值,我们回车。insert into users(uid,uname) select 10017,‘michael10017’;

在这里插入图片描述

我们可以验证一下。select * from users;

在这里插入图片描述

10017就已经插入进去了,这是第四种插入的方式

同时我们还有insert办法,insert into users,同时我们使用set命令,set中我们的uid=10018,如果我们对多个字段进行赋值,我们还可以通过uname等于michael10018,set命令中使用,字段名等于什么值,多个键值对之间使用逗号分割,我们回车。insert into users set uid=10018,uname=‘michael10018’;

在这里插入图片描述

这样子成功,我们还可以验证一下。select * from users;

在这里插入图片描述

10018就已经插入进去了

2.INSERT语句基本使用

INSERT INTO users(uid,uname,password,isadmin)

Values(1,’hxf’,’hxf123’,1)

插入的时候使用INSERT INTO,在那个表插入,后面跟着users,users表后面有括号,把需要插入值的字段写出来,字段名之间用逗号分割,字段的值,我们使用values来申明,后面用括号括起来,它的值与前面的字段是一一对应的,如果我们要对users表的所有字段进行插入,那么这个users的括号中,字段的列表可以省略,还可以部分的插入

INSERT INTO users(uid,uname,password,isadmin)

SELECT 1,’hxf’,’hxf123’,1;

另外插入的时候,values还可以用select来替换,select的办法主要是把一些变量变为值

Insert into users set uid=2,uname=‘hxf2’;

同时我们还可以使用set办法,对个别字段进行赋值,或者全部字段进行赋值,这是insert的基本使用

那么在注入攻击中insert有哪些注入逻辑和应用

报错可以让我们得到哪些信息,哪些信息是可以利用的

实战演示

我们首先看一下表的结构。show create table users;

在这里插入图片描述

我们看这个isadmin,它告诉我们是否是管理员,这个字段的含义相当重要,因为一旦变成管理员,我们就会得到很高的权限

那么我们对users表进行插入,insert into users,uid、uname、isadmin,我们只对这三个字段进行插入。同时插入的时候,传入的变量,我们命名为10020,uname是Michael20,isadmin,其实注入者不知道它的数据类型是什么,甚至不知道字段名是什么,我们猜测可能是字符也有可能是数字,这需要盲目的去尝试,叫盲注。这里我们猜测它可能是字符串,我们输个字符串,看看它有什么结果,或者有哪些有用的信息,回车。insert into users(uid,uname,isadmin) select 10020,‘Michael20’,‘hxf’;

在这里插入图片描述

我们会发现这里有个ERROR,ERROR是一个有用的信息,对于我们程序来说,不能够很好的把这些错误信息给屏蔽掉,那么对注入者来说,是可以利用的。在有的mysql版本,它不会直接返回报错结果或者警告信息,这个时候我们可以查看一下警告是什么。show warnings;

在这里插入图片描述

我们输入的字符是hxf,但是它告诉我们这个是整数值,并且这个字段是isadmin,这里就爆出了两个信息。第一我不知到这个字段名是什么,但是它告诉我,这个字段名是isadmin,这个字段相当重要,因为它告诉我们它可能是是否管理员的关键字段。第二个信息,它告诉我们是整数,整数中是否是管理员,一般1是管理员,0就不是管理员,这是我们的常识,这是利用报错,所暴露出的信息

3.INSERT语句报错逻辑

mysql> INSERT INTO users VALUES (‘1’,’hxf’,’hxf123’,’hxftest’);

Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> show warnings;

±--------±-----±-----------------------------------------------------+

| Level | Code | Message |

±--------±-----±-----------------------------------------------------+

| Warning | 1366 | Incorrect integer value: ‘’ for column ‘isadmin’ at row 1 |

±--------±-----±-----------------------------------------------------+

1 row in set (0.00 sec)

一方面我们明明知道它是整数,我们故意给它字符串,另外一方面,我们可能是不知道的,我们是盲目的尝试,叫盲注。因此,我们输入的时候,会有警告信息,如果程序不能很好的处理警告信息,把它暴露出来了,那么对于注入者来说,这些信息,都可以充分利用的,这是报错的逻辑。

那么除了报错的逻辑,那还有哪些是可以利用的呢

实战演示

首先我们看users表的结构。show create table users;

在这里插入图片描述

其中有个blog字段,在以前的网站中或者现在的网站中,我们经常会遇到过,如果打开个小网站,就会不断地跳出六合彩信息这些小广告。这些有部分是通过对blog类似的字段进行注入所造成的

我们可以对users插入一条记录,insert into users(uid,uname,blog),我们插入10021,uname我们插入michael21,blog的时候,我们原来设计的时候,可能是希望用户输入的是blogurl地址,但是注入者或者有意的入侵者,它输入的不是url,而是输入脚本’;

在这里插入图片描述

这里说明的是什么,在一些小网站中,javascript脚本,我们没有很好的去屏蔽用户输入的内容,在浏览器中对脚本进行解析,那么这个脚本就会执行,执行的后果,一方面一些六合彩信息不是注入者真正的用意,这些只不过是偷取流量而已,真正的注入者,它包括了mysql的链接文件,connection。insert into users(uid,uname,blog) select 10021,‘michael21’,'';

在这里插入图片描述

我们看一下这个users。select * from users;

在这里插入图片描述

4.INSERT留后门逻辑

Insert into users(uid,blog,password,isadmin)

Values(1,’cracker,GO,GO,GO’,’hxf123’,1)

注入者真正的用意是希望这个javascript脚本中,所传入数据库的链接文件,这样在适当的时候,就给门外服务器进行数据库链接的通信

用途:

insert into 类似于blog里面,注入者的用意是希望输入一个javascript脚本

1.一方面可能被注入者利用,相当于病毒脚本,当打开网页时,如果处理程序并未屏蔽脚本的浏览器解析,那么就会跳出很多广告窗口,目的只是获得流量。但是这个并不是真正的注入者

2.对于真正的注入者来说,应该放置着数据库连接和通信的脚本,以便在条件适当的时候,使用select into outfile的方式,到web可访问的目录下,目标是通过http协议就可以直接访问数据库。这个才是注入者的真正目标

5.小结

1.什么是DML语句

2.INSERT基本使用与注入逻辑

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-10 11:07:42  更:2021-12-10 11:09:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:08:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码