如何解决为什么 MYSQL HEX 函数的行为很奇怪?
select hex(user()) 的输出是 726F6F74406C6F63616C686F7374 并选择 unhex('726F6F74406C6F63616C686F7374') 将产生 root@localhost。
但是如果 select('select * from accounts') 将给出 73656C656374202A2066726F6D20746573742E6163636F756E7473,下面的查询不会被执行!只打印相应的字符串! !!!!
查询: 选择 unhex('73656C656374202A2066726F6D20746573742E6163636F756E7473')
输出:从帐户中选择 *
解决方法
数据库中命令的执行顺序如下:
unhex(hex(user())
unhex(hex(database())
unhex(hex(group_concat+table_name())
首先,数据库评估 user() 函数:
root@localhost
然后计算十六进制值:
726F6F74406C6F63616C686F7374
然后 unhex() 返回 726F6F74406C6F63616C686F7374 的值:
root@localhost
所以最终输出将是以下值:root@localhost
这些方法以前用于绕过 Web 应用程序防火墙。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。