24、Web攻防——通用漏洞&SQL注入&MYSQL跨库&ACCESS偏移

文章目录

一、SQL注入原理

脚本代码在与数据库进行数据通讯时(从数据库取出相关数据进行页面显示),使用预定义的SQL查询语句进行数据查询。能通过参数传递自定义值来实现SQL语句的控制,执行恶意的查询操作,例如查询数据库中的管理员账户密码。

二、测试SQL注入的地方

  1. URL栏中有参数的地方;
  1. 像登录注册窗口,虽然URL中没有参数,但是这种登录注册,脚本代码肯定会与数据库进行交互,不然它怎么知道你是真用户还是假用户。

ACCESS数据库中没有一个特定的表存储所有的数据库名、表名和字段名 ,因此只能通过字典爆破来猜表名和字段名。
ACCESS偏移注入可以解决这种情况:表名已知,列名未知。

Mysql数据库有权限管理:

不同用户的权限不同,也就是说不同权限的用户能够查询的表不一样。

Mysql两种思路:

  • 非ROOT的注入攻击:常规类的猜解数据(查数据库名、表名、字段名、字段内容);
  • ROOT用户的注入攻击:猜解数据,文件读写操作,跨库查询注入等。
  • 如何判断是ROOT用户还是非ROOT用户?
    黑盒测试中可以采用user()获取当前用户权限,白盒测试则看数据库连接用户。
  • 常规类的猜解数据:常见web漏洞原理整理

Mysql5.0 以上版本:自带数据库information_schema

  • information_schema包含mysql数据库中的所有数据库名、表名;
  • information_schema.schemata记录mysql数据库中的所有数据库名,主要是schema_name字段;
  • information_schema.tables:记录表名信息的表;
  • information_schema.columns:记录列名信息的表。

mysql注入获取相关数据:

  • 数据库版本------看是否符合有information_schema数据库------version()
  • 数据库用户------看是否符合ROOT型注入攻击------user()
  • 当前操作系统------看是否支持大小写或文件路径选择------@@version_compile_os()
  • 数据库名------为后期猜解指定数据库下的表、字段做准备------database()

跨库注入:实现当前网站跨库查询其他数据库对应的网站数据。步骤:

  1. 获取当前mysql下的所有数据库名。payload示例:
php 复制代码
id=-1 union select schema_name,2,3 form information_schema.schemata
  1. 后面就是常规的表名、字段名、字段内容。

在burp中,对变量进行base64编码如下图所示:

参考:tomcat 认证爆破之custom iterator使用

相关推荐
WeiQ_33 分钟前
解决phpstudy 8.x软件中php8.2.9没有redis扩展的问题
数据库·redis·缓存
DashVector5 小时前
向量检索服务 DashVector产品计费
数据库·数据仓库·人工智能·算法·向量检索
KYGALYX6 小时前
在Linux中备份msyql数据库和表的详细操作
linux·运维·数据库
檀越剑指大厂6 小时前
金仓KReplay:定义数据库平滑迁移新标准
数据库
努力成为一个程序猿.6 小时前
【Flink】FlinkSQL-动态表和持续查询概念
大数据·数据库·flink
kali-Myon7 小时前
NewStarCTF2025-Week4-Web
sql·安全·web安全·php·ctf·ssti·ssrf
毕设十刻7 小时前
基于Vue的学分预警系统98k51(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
liliangcsdn8 小时前
如何利用约束提示优化LLM在问题转sql的一致性
数据库·sql
熙客8 小时前
Kubernetes是如何保证有状态应用数据安全和快速恢复的
mysql·云原生·容器·kubernetes
Java爱好狂.9 小时前
分布式ID|从源码角度深度解析美团Leaf双Buffer优化方案
java·数据库·分布式·分布式id·es·java面试·java程序员