为什么 MYSQL HEX 函数运行异常?

why MYSQL HEX function is acting strangely?

selecthex(user())的输出是726F6F74406C6F63616C686F7374 select unhex('726F6F74406C6F63616C686F7374') 将产生 root@localhost.

但是如果 select('select * from accounts') 将给出 73656C656374202A2066726F6D20746573742E6163636F756E7473,下面的查询不是执行并打印相应的字符串!!!!!!!!

查询: select unhex('73656C656374202A2066726F6D20746573742E6163636F756E7473')

输出:select * 来自账户

命令在数据库中的执行顺序如下:

unhex(hex(user())

unhex(hex(数据库())

unhex(十六进制(group_concat+table_name())

首先,数据库对user()函数求值:

root@localhost

然后计算十六进制值:

726F6F74406C6F63616C686F7374

然后unhex() returns 726F6F74406C6F63616C686F7374的值:

root@localhost

因此最终输出将是以下值:root@localhost

这些方法以前用于绕过 Web 应用程序防火墙。