MySQL基于insert、update、delete的注入

0x00 环境搭建

最近在插入的位置找到了个注入,之前注过的地方基本都是在查询处,插入处还没做过,所以就找找文章自己研究了下。

先看我的测试环境:我的mysql版本为5.6.30-1,建的表名为test,内部如下图。

0x01 利用updatexml()获取数据

UpdateXML()是MySQL 5.1.5版本中添加了对XML文档进行查询和修改的函数,通过它我们可以报错注入。

插入、删除、修改的注入方式相同,我就只以插入为例:

结果如图(可以看到版本已经通过报错返回):

0x02 利用name_const()获取数据

上面看到,我们在测试环境已经可以可以注入了,但我在真实注入时却注不出来,报错信息提示找不到函数,可能是这个函数被禁用,只能换一个函数再试。

name_const()函数是MYSQL5.0.12版本加入的一个返回给定值的函数。当用来产生一个结果集合列时 , NAME_CONST() 促使该列使用给定名称。

依然以插入为例:

恩,可以了,注入其他数据只要在version处把payload写上就可以了,和正常的注入一样。不过问题来了,如果没有报错信息是不是就住不了了?

0x03 插入、修改的盲注

想要知道是不是可以盲注,我们要知道values里边到底是什么,也就是说values(‘a’ or ‘b’)存到数据库里到底是什么,那么我写了两条插入语句,如下:

下图是插入后的结果,我们发现其实他会把布尔值存到数据库中,那么我们就可以进行盲注了。

比如我们这样写插入语句:

这样在查看插入数据的时候就能看到其结果为(1,1).

发表评论