CTF--Web安全--SQL注入之报错注入

news/2025/3/16 7:13:20/

CTF–Web安全SQL注入报错注入

一、报错注入的概念
用户使用数据库查询语句,向数据库发送错误指令,数据库返回报错信息,报错信息中参杂着我们想要获取的隐私数据。通常在我们在页面显示中找不到回显位的时候,使用报错注入
二、报错注入常见的三种形式
1、extractvalue报错注入
2、updatexml报错注入
3、floor报错注入
除以上三种,还有大量的报错注入形式,以上三种最为常见,其中floor报错注入较复杂。
在这里插入图片描述

三、extractvalue报错注入
extractvalue:extract(获取) + value(值,有价值的信息)
打开HackBar,注入语句:
在这里插入图片描述

备注:
1、0x7e 为 ‘~’ 的ASCLL码,直接写 ‘~’ 也没有问题,目的就是将 / 换作 ~ 使页面报错。
2、concat()函数为连接函数,可以将括号中的参数拼接到一起。
3、函数的第一个参数通常习惯用1表示,可以不用管它。
注入语句后,我们在页面报错信息中,可以看到所在数据库名称security。

在这里插入图片描述
接着我们在security库中查询它的表有哪些。
在这里插入图片描述

在这里插入图片描述
我们查询到:security库中有 emails,refers,uagents,users四张表,根据英文释义,用户信息应该存储在users的那张表里,接着我们要查询user表中的列有哪些。
在这里插入图片描述
在这里插入图片描述我们查询到:users表中有三列:分别是id、username、password,毫无疑问,username和password是我们要获取的数据。接着使用查询语句获取这些信息。
在这里插入图片描述
但是查询到的数据非常有限,只能查询到部分用户的用户名和密码,故使用substr()函数,通过手动翻页来实现查询到全部的用户信息。
注:substr(待查询字符串,查询起始位置,查询长度)。
在这里插入图片描述
在这里插入图片描述
extractvalue()报错注入最多显示30个字节。
四、updatexml报错注入(细节与extractvalue几乎一致)
报错原理 约等于 extractvalue,利用~写出错误的path,使页面报错。
在这里插入图片描述
注入语句,查询当前数据库库名。第一个参数和第三个参数不用管,1和3就可以,我们的目的就是让它报错。
在这里插入图片描述当前库名为security,查询库中表名。
在这里插入图片描述

查询user库中的列名。
在这里插入图片描述
查询用户信息。
在这里插入图片描述
经过以上步骤,可以获得用户的全部信息。


http://www.ppmy.cn/news/1579515.html

相关文章

【ElasticSearch】学习笔记

一、lucene的组成 segment是一个具备完整搜索功能的最小单元。 多个segment组成了一个单机文本检索库lucene。 inverted index:倒排索引,用于快速根据关键词找到对应的文章term index: 构建出关键词的目录树,解决了term dictionary数据量过大&#xff…

手写一些常见算法

手写一些常见算法 快速排序归并排序Dijkstra自定义排序交替打印0和1冒泡排序插入排序堆排序 快速排序 public class Main {public static void main(String[] args) {int nums[] {1,3,2,5,4,6,8,7,9};quickSort(nums,0,nums.length - 1);}private static void quickSort(int[…

C++中const与指针的使用详解

在 C++ 中,const 和指针的结合可以产生多种语义,主要涉及指针的指向关系和指向数据的可修改性。以下是常见的几种情况及其区别: 1. 指向常量的指针(Pointer to const) 语法:const T* ptr 或 T const* ptr 含义:指针指向的数据是常量,不能通过指针修改数据,但指针本身…

Manus 一码难求,MetaGPT、OpenManus、Camel AI 会是替代方案吗?

Manus 一码难求,MetaGPT、OpenManus、Camel AI 会是替代方案吗? 一、Manus 的现象与问题 Manus 作为一款号称“全球首个通用 AI 智能体”的产品,凭借其强大的功能和新颖的营销策略迅速走红。然而,其封闭的邀请码机制和高昂的使用…

[IP]UART

UART 是一个简易串口ip,用户及配置接口简单。 波特率从9600至2000000。 该 IP 支持以下特性: 异步串行通信:标准 UART 协议(1 起始位,8 数据位,1 停止位,无奇偶校验)。 参数化配置…

设计模式之美

UML建模 统一建模语言(UML)是用来设计软件的可视化建模语言。它的语言特点是简单 统一 图形化 能表达软件设计中的动态与静态信息。 UML的分类 动态结构图: 类图 对象图 组件图 部署图 动态行为图: 状态图 活动图 时序图 协作…

python Jsonpath表达式语法取值

python Jsonpath 语法规则: 演示数据:{"status":"0","msg":"成功","data": [ {"foo1": "bar1"},{"foo1": "bar2"}]} 根节点:$ $.status $.…

DAY33 贪心算法Ⅱ

122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 想到把整体利润分解为每天的利润&#xff0c;就豁然开朗了。 class Solution { public:int maxProfit(vector<int>& prices) {int result0;for(int i1;i<prices.size();i){resultmax(0,pric…