前言
之前的安全开发我们学习了 php联动数据库的模式 ,这个模式是现在常用的模式 这一节来学习 如何 进行数据库的注入和数据库相关知识
1、了解数据库的结构
我们使用 navicate连接数据库之后看一下
一共四层结构 库 =》表=》字段=》数据 这个层级关系我们可以用 . 来细分 什么意思呢 就是我们要看上方这个数据库的 new这个表吧 我们就可以写 demo01.new 这个就是库表的层级表示 后边会用到
大家想一想就是为什么我们写一些查询语句这个msql可以快速给我们想要的数据啊
大家看见没有个 你妹的information_schema 他就像个向导 可以给系统指引
我们看看他的结构吧 看看这个自带的库有什么牛x的地方
再看看 tables 这个表
tables里装是我们所以的表名和数据库名
还有个重要的表就是 columns
知道了这些之后我们就可以进行简单的报表注入了
学习一个 union select 演示一下这个有什么用
比如这个 就是我们的联合查询 为什么使用这个呢 就是我们在开发里学过 php让数据库的查询
演示一下 我以pikachu进行联系pikachu靶场搭建教程(官方版)-CSDN博客
就是我们配置pikachu的时候 会有个 让我们配置数据库用户的内容
这个用户有什么讲究呢
了解数据库用户管理机制
其实这个就是 如果我们输入的是 root用户 那就会导致多个库的泄露 看一下
看这个库里边 除了pikachu 还有很多其他的网站库 但是root统一管理
还有个模式就是 权限最小化的管理 就是一个网站一个数据库 一个管理用户
用数据库连接工具连接一下
那我们把一个网站放到这里 不就实现了 权限最小化管理 (这个后边的跨库查询会使用到)
union 查询注入
打开皮卡出 选到sql注入
我们的第一步就是 判断前方的 select 有几个字段 从而使我们后边的union可以进行对齐
试一下 使用 order by 进行判断字段 试一下
关于绕过大家 可以输入纯 payload 在url里 会发现什么也不会报错
回显我们的输入不存在 那我们直接 写2试一下
那我们不知道库名啊 获取相关数据:
1、数据库版本-看是否符合information_schema查询-version()
2、数据库用户-看是否符合ROOT型注入攻击-user()
3、当前操作系统-看是否支持大小写或文件路径选择-@@version_compile_os
4、数据库名字-为后期猜解指定数据库下的表,列做准备-database()
那你看好 我们使用 这个的信息收集
为了后续的实验我们还得获取一下 是不是root用户和什么操作系统
这些都知道之后我们之间开始 利用infomation_schema 库进行注入吧
得到表名之后干什么呀 我们上面不是说了个 columns 吗 他是干什么的呢 不是承装列名的吗
那我们就使用它
得到了列 用户名和密码 那我们直接 select
大家可以和数据库的对一下
root型注入
1、跨库查询
我们上面写了 这个root管理用户 的好坏 统一管理 那我们可不可以在pikachu这个库找我们上边 zblog的东西呢 demo(演示)一下 我们看一下 zblog的敏感信息
这个就是跨库查询的危害 但前提是你能找到这个网站 (这个多半是他的子域名网站)
是吧 要是拿到了后台账号密码是不是可以搞事了呀
2、文件读写
在此之前学习2个 语句 load_file(文件的读取) 和 down file(文件的写入)
创建一个 1.txt 写上内容
文件的写入
ok那我们直接使一下 看看能不能使用 写入 + 查看直接 拿下服务器
还是以pikachu为例子 我们进入网站 我们不知道他的网站目录在哪里 你妹的怎么办呀 得先判断是什么系统吧 就是上边的语句 我们知道了是win 之后 路径怎么找呀 这个
获取网站路径绝对路径的方法汇总 - 看不尽的尘埃 - 博客园
当然也可以利用目录扫描工具梭哈一下
这边我就直接演示了
我们看看 你妹的纯纯马子
这样是不是就可以直接哥斯拉 连接搞事了呀
总结
介绍简单的sql注入 去获取服务器的权限