参考:
官方文档: MYSQL 5.7 https://dev.mysql.com/doc/refman/5.7/en/hexadecimal-literals.html
在线转换:https://stool.chinaz.com/hex
选择Hex编码,解码。
Table -> %54%61%62%6c%65
刚好对应官方文档中的: select 0x5461626c65 # => Table
( 注意:在windows的Heidi MySQL客户端上该结果仍然显示0x... ,这个不是你的问题,是该软件的问题。
在正常的client或者php返回结果的页面中,仍然会正常显示Table这个文字结果的)
奇怪。 不过我在另外一篇绕过WAF的文章中看到过这个。
在MySQL中,可以这样用:
# SELECT 0x00 # -> 0x00
# SELECT X'' + 0 # => 0
# SELECT CHARSET(X''), LENGTH(X'') # => binary, 0
# SELECT X'20' + 88; # => 120, = 32 + 88 , = 0x20 + 88 , 0x20 = 2 x 16 = 32
# SELECT X'20' # => 0x20
# SELECT X'20' + 1 # => 33 = 0x20 +1 = 32 + 1
所以,有一个例子:
SELECT GROUP_CONCAT(username, PASSWORD SEPARATOR '<br>') FROM users;
SELECT GROUP_CONCAT(username, PASSWORD SEPARATOR 0x3c62723e) FROM users;
上面的 '<br>' 与下面的 0x3c62723e 是等价的。都会返回以下结果;
GROUP_CONCAT(username, PASSWORD SEPARATOR 0x3c62723e)
DumbDumb<br>AngelinaI-kill-you<br>Dummyp@ssword<br>securecrappy
在Mysql中,可以使用HEX函数来转换
select hex('Banana'), # => 42616E616E61
也可以把一个 hex转换成字符串:
select CAST(unhex('42616E616E61') AS CHAR(100)) # => Banana