在上一篇中,详细的介绍到了SQL注入产生的条件和原因,而对利用方法的思考还是有局限性,没有达到效果。另外对于单引号的引入问题还不是很明确。在这篇,我们继续对这一处SQL注入进行分析。
开课啦~
方法一 hex编码
我们写入shell的语句是:
‘3c3f70687020406576616c28245f504f53545b615d293b203f3e’
Mysql内置函数char()可以将里边的ascii码参数转换为字符串,同样是上面编写的webshell转换成ascii的形式,这里我们用Python实现快速转换:
[60, 63, 112, 104, 112, 32, 64, 101, 118, 97, 108, 40, 36, 95, 80, 79, 83, 84, 91, 97, 93, 41, 59, 32, 63, 62]
针对这个问题,我查阅了一些资料,也在本地测试此函数,得出了一个结果,就是在默认情况下,函数只解析双引号,如图:
我们看看Beescms里边的写法,定位到函数 fl_html : (位于/includes/fun.php下面)
return htmlspecialchars($str);
}