16、SQL注入之查询方式及报错盲注

news2024/9/20 22:13:45

目录

    • 前言
    • SQL注入报错盲注
    • 补充: Access暴力猜解不出的问题?

前言

当进行SQL注入时,有很多注入会出现无回显的情况,其中不回显的原因可能是SQL语句查询方式的问题导致,这个时候我们需要用到相关的报错或盲注进行后续操作,同时作为手工注入时,提前了解或预知其SQL语句的大概写法也能更好的选择对应的注入语句。

对方在执行SQL语句之后,结果在显示的时候,他有一些显示上的代码,如果这个代码使用不当,也会导致无回显。

select 查询数据
在网站应用中进行数据显示查询操作
例: select * from news where id=$id

insert 插入数据
在网站应用中进行用户注册添加等操作
例: insert into news(id,url,text) values (2,'x','$t')

delete 删除数据
后台管理里面删除文章删除用户等操作
例: delete from news where id=$id

order by 排序数据
一般结合表名或列名进行数据排序操作
例: select * from news order by $id
例: select id,name,price from news order by $order

重点理解:
我们可以通过以上查询方式与网站应用的关系、注入点产生地方或应用猜测到对方的SQL查询方式

网站用户注册,我们输入相关的账号密码和一些相关信息之后,我们点击立即注册,这个网站就会注册成功一个账号,注册成功一个账号后,就可以用这个账号登录。这个用户注册的功能,就是将对方的信息写到数据库里面,这个操作明显就是添加和插入的操作。就相当于我们测试的是Insert查询方式下的注入

功能不同,对应的语句查询方式也会不同

在网站中,看到相应的功能,在这个时候,我们要测试这个功能是否存在注入点,你应该要提前知道这个功能会涉及到的查询方式

每个数据库他的查询方式的写法都会有很多不同

SQL注入报错盲注

盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。我们可以知道盲注分为以下三类:

基于布尔的SQL盲注-逻辑判断
regexp、like、ascii、left、ord、mid
(不需要回显就能够判断的)

基于时间的SQL盲注-延时判断
if、sleep
(不需要回显就能够判断的)

基于报错的SQL盲注-报错回显(强制性报错)
floor、updatexml、extractvalue
https://www.jianshu.com/p/bc35f8dd4f7c

是那种盲注是由网站决定的,我们优先选择报错回显,这是最简单的,其次是逻辑判断,最后才是延时判断。因为这三种判断,从效率来看,报错回显是最快的,逻辑判断复杂点,延时判断是最慢的。它根据一个网站回显的时间来判断

参考:
like 'ro%'                             #判断ro或ro...是否成立
regexp '^xiaodi[a-z]'                #匹配xiaodi及xiaodi...等
if (条件,5,0)                          #条件成立 返回5 反之 返回o
sleep(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
Payload:
pikachu insert
username=x' or (select 1 from(select count(*),concat((select (select (select concat (0x7e,database(),0x7e))) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by xia) or'
&password=xiaodi&sex=%E7%94%B7&phonenum=13878787788&email=wuhan&add-hubei&submit=submit

insert语句的特性决定了,它的回显是系统上的是否执行成功、是否执行失败,有没有错误

select注入决定了它是有回显注入的,有回显数据就能回显;针对无回显的,我们要使用盲注,解决它无回显

sql语句的查询方式是决定无回显的因素之一,因为网站对查询完的数据没有进行显示操作的话,也一样会造成无回显,这种情况也是另外一种情况
在这里插入图片描述
在这里插入图片描述
0x7e这一串代码经常会在注入工具里面出现,我们工具在注入的时候,会使用0x7e标出我们想要的数据,方便工具把它取出来。

其实是为了开发者在注入工具里面提取出数据,因为它不会向人工那样去上面看一下
Insert和update它的写法是一样的,无非是代码的实现效果上不一样

pikachu update
sex=%E7%94%B7&phonenum=13878787788&add=hubeNicky’ or (select 1 from(select count(*),concat( floor(rand(0)*2),0x7e,(database()),0x7e)x from information_schema.character_sets group by x)a) or '&email=wuhan&submit=submit

sex=%E7%94%B7&phonenum=13878787788&add=hubeNicky' or updatexml(1,concat(0x7e,(version())),0) or'&email=wuhan&submit=submit

sex=%E7%94%B7&phonenum=13878787788&add=Nicky' or extractvalue(1,concat(0x7e,database())) or'&email=wuhan&submit=submit

加号对应着空格

我们如果要进行注入分析的时候,面对对方某个网站的地方,要清楚它是什么类型的查询方式注入,另外我们要知道这种查询方式是有回显还是没回显

12种报错注入类型基本上包含在sqlmap这种工具里面去了,大家不必去了解这种东西,这些都是SQL语句的写法,我们可以不需要去了解为什么要这么写,你只要知道它是用什么方式去玩就可以了。

各个数据库的函数都是一样的,只是写法不一样而已,具体的查一下资料都能查的出来。不要去纠结这个事情,其它数据库的函数无非就是名字不一样而已,知道作用就可以了。

延时注入可以进行对数据库的猜解,它不需要我们回显,因为它回显的结果就是根据我们页面的加载时间

我们在实际的工作当中是不推荐我们用延时去判断,因为每个网站它返回的时间是不一样的,有的网站打开非常快,有的网站打开非常慢。延时有时候会受到网络速度的影响,所以会有判断上的一些小问题

要经过对比才能知道是否存在延时,所以要调一个能够判断的时间,例如10s

如何猜解出数据库名,先判断它的长度,然后再根据第一位进行猜解,数据库不可能有特殊符号,一般是由字母或加数字组成,一位位的猜下去就可以了

用手工去猜解肯定是很慢的,一般这种注入会用工具和脚本去跑,手工只是了解它的原理,便于我们再注入不成功的时候,去研究那一步有问题

用工具去跑,它判断和115判断是没有区别,如果我们写字符串a-z,0-9,还有一些特殊字符,用编程去实现的话,我们是不是要把所有字符去遍历一遍,依次写到payload里面去猜测,但是如果是数字的话,一个for循环就完事了。

ascii十进制是从0-127。

有些网站就是好玩,明明查询出来的数据,它能够显示,但它就是不显示。不回显的情况下只能采取盲注。

补充: Access暴力猜解不出的问题?

Access偏移注入:解决列名获取不到的情况
表、列名不知道的情况:查看登陆框源代码的表单值或观察URL特征等也可以针对表或列获取不到的情况;这不是百分百的,只是说这是一种方法。
如果靠以上的方法还是搞不出来,那就只能靠字典乱搞了

http://192.168.64.136:81/Production/PRODUCT_DETALasp?id=1513 UNION SELECT 1,2,3,4,5.6,7,8,9 10,11,12,13,14,15,16,* from admin

星号,可代替的字符串

一级偏移语句:
127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,* from (admin as a inner join admin as b on a.id = b.id)

如果你发现,上面查看了网页源码也爆不出数据,请用以下方法:
二级偏移语句:
127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id = b.id)inner join admin as c on a.id=c.id)

Access偏移注入参考文章:https://www.cnblogs.com/02SWD/p/15811580.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/733420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进程间通信的介绍

目录 进程间通信的目的 进程间通信发展 进程间通信分类 进程间通信的分析 进程间通信的目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息&a…

PWM+RC 滤波的DAC 输出的数学理论

PWM示意图 PWM 本质上其实就是一种周期一定,占空比可调的方波。典型PWM 波形如下 图所示: PWM分段函数 图中的PWM 波形可以用如下分段函数表示: 函数中:T 是单片机中计数脉冲的基本周期,也就是STM32F4 定时器的计数频率…

Couldn‘t find a tree builder with the features you requested: lxml

这是一个常见于Python爬虫代码的报错。 报错原因:BeautifulSoup的解析方法之一,xml,需要安装好lxml库才行 解决办法:安装 lxml 库即可。 pip install lxml 安装好之后,BeautifulSoup就能正常解析了。 然后&#xff…

RabbitMQ系列(26)--RabbitMQ实现高可用负载均衡

前言:我们以往只能连接一个指定的队列,不能自由地连接其他的队列,当我们连接的那个指定队列宕机了,生产者和消费者都没办法往队列发送消息和消费消息,而且生产者和消费者也不能自动的连接到其他正常运行的队列&#xf…

嵌入式开发--XW09A触摸芯片的使用

XW09A触摸芯片 XW09A是厦门市芯网电子科技有限公司出品的一颗触摸芯片,支持9键多点触摸,I2C接口,带中断引脚。 以下摘抄自芯片手册 极高的灵敏度,可穿透13mm 的玻璃,感应到手指的触摸 超强的抗干扰和ESD 能力,不加任何…

设计模式-迪米特法则

代码世界中类间的耦合关系会直接影响代码可复用性、可读性、可扩展性等。这种耦合关系就如同人之间朋友关系一样,志不同道不合不应相于谋,否则最终只会落得个互相伤害的下场。代码组织时也应如此,应按照一定的原则处理好类之间的关系&#xf…

C++常用库函数 3.数据转换函数

函数名&#xff1a;abs 函数原型&#xff1a;int abs(int n)&#xff1b; 参数&#xff1a;n 整数值。 所需头文件&#xff1a;<cstdlib> 功能&#xff1a;求绝对值。 返回值&#xff1a;返回 n 的绝对值。函数名&#xff1a;atof&#xff0c;atoi&#xff0c;atol …

第42节:cesium 火焰效果(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><!-- :shouldAnimate="true" 添加动画 --><vc-viewer @ready

linux 命令之find

find 命令 1. 作用 命令用于在指定目录下以及其子母路查找文件和目录。 2. 语法 find [path] [expression] 不指定path的默认为当前路径 2.1 常见的参数 -name pattern&#xff1a;按文件名查找&#xff0c;支持使用通配符 * 和 ?。 -type type&#xff1a;按文件类型查…

NVIC的中断挂起寄存器和EXTI的中断挂起寄存器的区别

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;仅个人拙见&#xff0c;若有错误&#xff0c;欢迎大家指正&#xff0…

Spring MVC 程序开发

什么是 Spring MVC&#xff1f; 官⽅对于 Spring MVC 的描述是这样的&#xff1a; Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,”…

数据特征降维 | 核主元分析KPCA数据降维

文章目录 效果一览文章概述部分源码部分源码参考资料效果一览 文章概述 数据特征降维 | 核主元分析KPCA,主要用于数据降维。 部分源码 部分源码 %% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear …

SpringBoot(六)SpringBoot项目部署到腾讯云服务器

这篇文章&#xff0c;可以说是干货满满。关注我的同学应该直到&#xff0c;之前我有几篇SpringBoot的文章&#xff0c;介绍了如何搭建本地服务器&#xff08;没看过的同学可以系统地看下我的SpringBoot专栏&#xff0c;保证你会有很多的收获&#xff09;。但我们那都是在本地玩…

CSDN1周年的创作纪念日【个人总结】

机缘 2022年的7月&#xff0c;第一次了解到这个平台。 得知这个平台可以实现以下功能&#xff1a; 例如&#xff1a; 实战项目中的经验分享日常学习过程中的记录通过文章进行技术交流… 收获 其实出发点是我自己整合笔记&#xff0c;顺带佛系分享给大家看&#xff0c;但是好…

在原有J-IM基础上改造,开发记录方便日后学习,主要区别加入mysql持久化,但是不完善、仅供参考

在原有J-IM基础上改造&#xff0c;开发记录方便日后学习&#xff0c;主要区别加入mysql持久化&#xff0c;但是不完善、仅供参考 原站地址 https://gitee.com/xchao/j-im 改造后的地址 https://gitee.com/lbx_1397372495/jim-chat 本地启动测试 1&#xff0c;修改mysql 数…

Windows 安装 RabbitMq 和 Erlang

1.安装Erlang 音乐RabbitMq是基于Erlang开发的&#xff0c;所以先要安装这个环境 下载地址&#xff1a;32位 64位 其他版本自己找 官网 下载完之后无脑安装直接一直下一步 2.配置Erlang环境变量 2.1 新建ERLANG_HOME 把自己的安装的根目录填进去 比如&#xff1a;C:\Progra…

计算机体系结构基础知识介绍之缓存性能的十大进阶优化之小型且简单的一级缓存(二)

缓存是一种高速的存储器&#xff0c;用于存放处理器经常访问的数据和指令。缓存的组织方式有多种&#xff0c;其中一种是按照不同的关联度(associativity)来划分。关联度表示一个缓存块(block)可以放在缓存中的位置数。关联度越高&#xff0c;缓存中可以容纳的不同块的数量越多…

动态规划之62 不同路径(第4道)

题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&…

网络的构成要素【图解TCP/IP(笔记七)】

文章目录 网络的构成要素通信媒介与数据链路网卡中继器网桥/2层交换机路由器/3层交换机4&#xff5e;7层交换机网关各种设备及其对应网络分层概览 网络的构成要素 通信媒介与数据链路 计算机之间通过电缆相互连接。电缆可以分为很多种&#xff0c;包括双绞线电缆、光纤电缆、同…

Vue3.3 编译宏

Vue 3.3新增了一些语法糖和宏&#xff0c;包括泛型组件、defineSlots、defineEmits、defineOptions defineProps 父子组件传参 <template><div><Child name"xiaoman"></Child></div> </template><script langts setup>…