本文章由核心成员Luan原创,未经允许严禁转载。
前天写了phpcms的一个注入exp,经过大量测试发现,很多网站明明存在漏洞,我的exp却失败了。
多方面分析后,结果不是因为waf,而是因为mysql版本问题。
我的exp是使用的报错注入,如果mysql版本过低,某些报错函数就用不了!详细见下文:
1.MySQL 5.1.5版本中添加了对XML文档进行查询和修改的函数,分别是ExtractValue()和UpdateXML()
Mysql5.0:
Mysql5.1
所以在mysql 小于5.1.5中不能用ExtractValue和UpdateXML进行报错注入。同理,mysql 5.5 limit后sql注入 准确的适用范围是 MySQL 5.1.5~5.5。
PS:updatexml报错函数的结果有32位的长度限制
2.一些函数在Mysql 5.0.中存在但是不会报错,5.1后才可以报错
geometrycollection()multipoint()polygon()multipolygon()linestring()multilinestring()exp()
MySQL5.0:
在5.1和5.5中测试其中一个:
这也就是为什么我的phpcms的exp测试某些网站不行的原因了!
3.在MySQL5.7中多了很多能报错的函数
ST_LatFromGeoHash()ST_LongFromGeoHash()GTID_SUBSET()GTID_SUBTRACT()ST_PointFromGeoHash()
mysql> select ST_LatFromGeoHash(version());ERROR 1411 (HY000):