另类利用mysql自带conv+hex函数实现绕过注入

这类注入一般情况下很少见,除非CTF题目中比较常见,类似dnslog注入什么的。

注入语句:conv(substr(hex(database()),1,12),16,10) 使用16进制转换输出10进制

我们可以使用mysql控制台进行演示一下。

将hello转换为16进制 输出为10进制的数字

之后我们可以使用unhex 表示 转换hex成字符串形式,

至于实战注入的话,可能需要substr字符串截取的方法,因为太多的话会导致字符不精准,对于strsub替换的数字只能有1|12,13|12,25|12,每个代表一位字符。

假设注入语句为:select a from a where a=1 union select conv(substr(hex(database()),1,12),16,10);

那么返回的十进制位数应该是:1952805748 之后再用mysql自带的函数进行转码。

这样就得到了数据库的名称。

 

posted @ 2019-11-04 19:53  WINDECODE  阅读(341)  评论(0)    收藏  举报