作者:晓华[岁月联盟信息安全团队&东软SOVO凝聚科技] 文章已经发布在***手册 转载请说明出处!
在FLYH4T大哥的“Mysql5注射技巧总结”一文中介绍了通过使用“information_schema”库实现遍历猜解库名表名以及字段名的技术,解决了一些以前使用工具无法猜解到的库名表名以及字段名的问题,提高了注射的效率。关于此文的详细技术细节请参考往期的“***手册”。但是通过我的研究,发现这种技巧有一定的缺陷。首先遍历的库名或者表名以及字段名等位置,要使用到limit功能语句来强制返回select查询的记录数。如果在***中limit功能语句无法使用,是不是很难进行遍历了?如果被限制的话,可以使用“!=”来绕过。语句使用格式:
show.phpid=2/**/and/**/1=2/**/union/**/select/**/1,table_name,3,4,5,6,7,8,9,10/**/frominformation_schema.tables/**/where/**/table_schema=database()/**/and/**/table_name/**/!=char(97,100,109,105,110)
虽然这样能够绕过limit的限制,但是利用起来非常不方便,而且猜解的速度很慢。经过我的仔细研究,找到了一个相对比较好的方法。而且解决了limit被限制的问题,更重要的是加速了遍历的速度,明显提高注射的效率。
group_concat()函数介绍
首先我们来了解一下group_concat()函数,该函数完整语法如下:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_nam