SQL Injection 1(勘误)

SQL Injection 1(勘误)

– 关于information_schema的进一步理解

勘误

上篇博客(SQL Injection 1)时我说了限制权限就能解决联合注入的问题,好吧,真的是too young too simple

自己真的是太无知了,幸好在进行盲注前自己动手实验了一下,果然实践才是检验真理的唯一标准

OK,先来创建一个只有访问dvwa数据库和简单操作的用户~~(简单在MySQL建了一个test数据库和两张表dvwa和pwd,插入了简单的一些数据)~~

SQL Injection 1(勘误)

然后我们去mysql数据库的user表中查看一下,OK,发现test1用户确实已经创建好了

SQL Injection 1(勘误)

接着我们退出当前用户已test1用户身份登录

SQL Injection 1(勘误)

这时候show databases;一下,瞬间眉头一皱发现事情没那么简单…

SQL Injection 1(勘误)

没错我们只授权了test数据库,但却出现了我们联合注入的好朋友information_schema数据库…

这时候我们按照上篇博客注入的命令走一遍,

SQL Injection 1(勘误)

SQL Injection 1(勘误)

好吧,真的是限制了权限依旧是没什么卵用啊…

information_schema只是一个视图,新建用户就算没有任何权限都能查到这个视图,但该用户只能看到自己被授权的
信息

查询了下information_schema的信息,然后发现了上面一句话,我的理解就是因为我们给用户授权了test数据库的一些使用权所以可以通过information查看到当前的授权信息

切换到root用户简单建一个表插入点数据测试下

SQL Injection 1(勘误)

在root用户下,切换到test数据库下查询下test2数据库中的表明,没有问题

SQL Injection 1(勘误)

切换回test1用户,再做上面一样的查询

SQL Injection 1(勘误)

可以发现返回的表名为null,所以限制权限还是有作用,至少能保护没有授权表的信息

参考

  1. mysql5.7给用户只授权了具体的某个数据库,为何能看到information_schema数据库啊?