mysql - 为什么 MYSQL HEX 函数行为异常?
问题描述
select hex(user())的输出是726F6F74406C6F63616C686F7374 和select unhex('726F6F74406C6F63616C686F7374')将产生root@localhost。
但如果select('select * from accounts')将给出73656C656374202A2066726F6D20746573742E6163636F756E7473,则不执行以下查询,只打印相应的字符串!!!!!!!!!
查询: select unhex('73656C656374202A2066726F6D20746573742E6163636F756E7473')
输出:从账户中选择 *
解决方案
数据库中命令的执行顺序如下:
十六进制(十六进制(用户())
十六进制(十六进制(数据库())
unhex(hex(group_concat+table_name())
首先,数据库评估 user() 函数:
根@localhost
然后将计算十六进制值:
726F6F74406C6F63616C686F7374
然后 unhex() 返回 726F6F74406C6F63616C686F7374 的值:
根@localhost
所以最终输出将是以下值:root@localhost
这些方法以前用于绕过 Web 应用程序防火墙。
推荐阅读
- c++ - 函数过早退出循环
- javascript - 如何在 React js 中通过道具传递内联样式?
- html - 将 div 放在另一个上以在所有设备上保持相同
- python - 尝试安装 tensorflow 对象检测 API 时出错
- reactjs - 从输入中搜索时过滤掉行数据
- mysql - 如何使用 xampp 创建的 mysql 中的数据在反应中显示图像
- xml - BizTalk - 在记录的开头和结尾为带有单词分隔符的平面文件构建 XSD
- navigation - Gatsby:你如何创建一个动态导航,将当前页面标记为活动的?
- ios - 核心数据合并策略有时会删除对象
- reactjs - TypeError:在 React 中比较数组中的对象时无法读取未定义的属性“x”