SQL注入 报错注入、文件上传、布尔盲注、时间盲注

第7关   文件上传     ---面试官常问

1、MySQL上传shell的满足条件

如果面试官问你如何通过MySQL向网站上传一个shell脚本或者其他语言的一些脚本

---就可以通过outfile导出的方式进行上传;

outfile导出的前提条件:1、必须知道网站的物理路径;

---因为你要导出到网站那就必须知道网站的路径

  2、必须拥有管理员权限;//上传文件就必须要管理员权限

  3、secure_file_priv 不为 NULL ;

当值不为空,则必须要上传到着参数指定的路径下

2、secure_file_priv 参数

secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。

secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能导出导入。

secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。

--2、查看secure_file_priv 的命令

show global variables like '%secure_file_priv%';

第8关   ---布尔注入

前端直接只会显示一个是否已经进入的界面;

当后端的MySQL代码执行没有报错,或执之后的逻辑返回也是为真,那么就会显示你进入其中了;

当后端的MySQL代码被执行时,出现了报错,那么你的web前端将会显示什么也没有;

这就类似于布尔类型的显示

你要记住,这里的$row是被if给逻辑判断了的,当被正确执行或值为真就会进去;

我们查看后端代码,发现出现这种情况的无非就是因为这段代码--->

MySQL代码被执行就是这段代码实现的。这段代码即对MySQL代码进行执行了又对返回的结果进行处理了;

mysql_quer()才是执行MySQL的查询语句的

当MySQL代码被执行之后返回结果为真的时候就会进入这个if里面;

反之当MySQL代码被执行之后的返回结果为假或直接MySQL代码执行错误(执行错误肯定也算不上为真吧)就会不进入里面;

---所以我们就应该利用这个真假不同的来通过地址栏来执行一段MySQL代码,这个MySQL代码因为不会打印错误信息,所以我们就直接一个一个判断数据库的每个字符;

2、如何进行爆破出数据库名称

---1、通过地址栏,来直接输入一段MySQL的逻辑代码,让后端接收到的为真或假,然后后端在真的基础之后就会显示 东西1,在假的基础上就会显示  东西2,那么我们就可以知道我们的逻辑代码执行之后到底是真还是假;

所以我们这段逻辑代码就可以用来判断数据库的每个字符,一个一个推敲数据库的每个字符;

127.0.0.1/sqli-labs-master/Less-8/?id=1' and ascii(substr(database(),1,1))>114 --+

---当为真的时候,说明比ASCII114大,当为假的时候表示<114 or =114;

--就是这样就可以一个一个推出数据库的每个字符了;

---substr(str,start,long);  截取字符串,一个是起始位置,一个是长度;

当然我们这种获取数据库名称的方式适合任何显示具有布尔视图的网站!!!,包括我们的第5关;

---2、有没有发现如果我们真的在地址栏这里一个一个测试判定数据库的名字字符的话就会非常慢,所以我们尽量这种情况直接使用脚本;

---写脚本之前我们要先明白,我们的脚本不是被网站去调用,而是脚本来调用我们的网站,你想想网站怎么可能去主动调用我们的脚本嘛,肯定是脚本去访问我们的网站,然后一个一个去测试我们的数据库名称呀!

只要是布尔注入就可以使用时间盲注,之所以很多时候不用时间盲注,是因为时间盲注耗费的时间;

---那么时间盲注到底什么时候用最好?

请看下一关:

第9关,不管你有没有进入,就是不管你有没有登录成功,前端都会显示一样的界面   ---时间盲注

1、当我们的前端不管你有没有进入成功都是显示的同样的界面怎么办?

这种总不能还让我们通过页面的布尔类型来判断了吧;

对,这种肯定是不能通过页面布尔来判断,但是我们可以人为手工去创建一个布尔效果来;

如:手工造一个时间布尔!!

127.0.0.1/sqli-labs-master/Less-5/?id=1'

and if(ascii(substr(database(),1,1))>115,sleep(2),sleep(0))--+

当数据库的首字母ascll码>115网站就沉睡2秒,当<115就不沉睡;

注意sleep()是在if()里面的!

所以,从这里可以看出我们的当我们不管是真是假,我们的显示界面一样的话,我们就直接手动创建一个时间布尔;

可以看出这个时间布尔也是可以通过脚本实现的,且实现的方式和前面的页面显示布尔差不多;且可以通同一套逻辑来实现!!

----------->

我们的数据表该怎么求?

第10关   ---同第九关一个原理,只是闭合换成了')

第11关   ---从此关开始,后续都是使用的post传参;

此关和第一关类似,你怎么在url输入查询的就怎么在这里输入查询;post传参和get传参的逻辑没有区别,只是在注释的时候会有区别

但是注意:post传参注释会从--+变成#,原因请看末尾补充部分!

--使用联合查询即可

第12关   ---此关和第2关类似,只是在闭合的时候发生变化,从‘’变成()

使用联合查询即可

第13关   ---和第3关类似,当你输入的数据看不到真实的数据,但是会报错;

那么我们就可以直接使用报错函数updatexml进行强制执行sql语句,将查询出来的结果给爆出来;

对报错注入有疑惑不妨尝试看看这个博客------>

SQL注入 报错注入+附加拓展知识,一篇文章带你轻松入门-CSDN博客

第14关   ---和第4关类似,当然就肯定和第13关类似,也是会输出报错内容,只是闭合和第13关有区别;

所以还是可以使用updatexml(参数1,路径,参数2);路径必须合法,不能有特殊符号;

所以可以使用

--->concat('%7e',(select-group_concat(table_name)

from-information_schema.tables where table_schema=security))

第15关和第5关类似,直接使用时间盲注

---注意:不管是时间盲注还是updatexml通过路径错误来实现报错注入,他们都是可以执行查询语句的;因为后端的php代码会执行sql代码;

补充知识点:

1、var_dump($row)   //使用php函数在屏幕上打印字典集合

2、url编码会把#进行其他转换,所以#传给数据库的时候,已经不是#了,所以就没有了注释的效果的了;

url的地址栏的数据必须是在ASCII码表上有的

详细可见以下博客

URL编码/解码详解

3、为什么要用--+,而不能用--空格;+的作用是什么

MySQL中多行注释是/* */

单行注释是:--空格和#

那么我们在url中传递MySQL的命令时,如果要注释一行的话,就不能写#,因为#是特殊字符,url中不允许出现这种,只能用%23来表示;

--可见上文;

能用%23表示后,在经过url编码之后就会变成#;

同时,我们传递参数也不能使用--空格,因为我们的url中空格/+经过编码之后就会变成+/空格

所以--空格在url中会被编码成--+,然后传递过去也就是--+;

当然如果你在url中写的是--+的话,那么经过url转换之后就会变成--空格;

多行注释是:/* */

---------------------------------我们只讲思路,不讲详细过程;

                                          过程是背,思路是理解;

                                           想要走多远,10%背+90%理解

祝你年薪百万,成绩辉煌!!!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络编程相关

关于ipv4和v6 ipv4小细节-------公网和私有地址 端口 InetAddress 协议 UDP、TCP UDP通信程序 发送&#xff08;单播&#xff09;&#xff1a; 接收&#xff08;单播&#xff09;&#xff1a; UDP三种通信方式 单播和广播代码几乎相同&#xff0c;就是将&#xff1a; InetAddr…

【JVM基础11】——垃圾回收-说一下JVM的分代回收?

目录 1- 引言&#xff1a;分代回收1-1 什么是分代回收&#xff08;What&#xff09;1-2 为什么要用分代回收&#xff1f;&#xff08;Why&#xff09; 2- ⭐核心&#xff1a;分代回收工作机制2-1 工作机制2-2 MinorGC、Mixed GC、FullGC的区别是什么 3- 总结3-1 说一下 JVM 的分…

如何利用 ChatGPT 提高工作效率?

内容创作与总结&#xff1a; 写作辅助&#xff1a;可以帮助撰写文章、报告、邮件等各种文本&#xff0c;如为招商银行写宣传文案、写论文、写故事等。学习材料生成&#xff1a;能够生成学习材料&#xff0c;如摘要、抽认卡和测验&#xff0c;帮助学生复习和学习课程。评估和考核…

【Material-UI】深入理解useAutocomplete Hook:自定义与高级用法

文章目录 一、什么是useAutocomplete&#xff1f;导入useAutocomplete 二、基本用法代码解析 三、高级定制1. 自定义选项渲染2. 分组和排序3. 自定义输入框行为4. 与其他组件集成 四、注意事项1. 类型安全2. 性能优化 五、总结 Material-UI提供了强大的Autocomplete组件&#x…

Android 本地化、多语言切换:Localization

目录 1&#xff09;如何实现多语言切换、如何实现跟随手机语言切换而切换app语言 2&#xff09;Localization是什么 3&#xff09;不管手机语言如何&#xff0c;根据用户在App选择的语言&#xff0c;只切换App语言 4&#xff09;文字长短不一样&#xff0c;怎么办呢? 一、Lo…

Java面试之操作系统

1、冯诺依曼模型 运算器、控制器、存储器、输入设备、输出设备 32位和64位CPU最主要区别是一次性能计算多少字节数据&#xff0c;如果计算的数额不超过 32 位数字的情况下&#xff0c;32 位和 64 位 CPU 之间没什么区别的&#xff0c;只有当计算超过 32 位数字的情况下&#…

我花了一天时间,搭了个专属知识库,部署上线了,手把手教,不信你学不会

自动开了这个号以后&#xff0c;陆陆续续写了很多干货文章&#xff0c;一方面是可以帮助自己梳理思路&#xff0c;另一方面也方便日后查找相关内容。 但是&#xff0c;我想检索某个关键词是在之前哪篇文章写过的&#xff0c;就有点捉急了。CSDN 还好&#xff0c;可以检索到相关…

魔塔社区程序的`datasets.utils`导入`_datasets_server`错误问题的解决办法

运行魔塔社区的的一个识别图像文件中文字的模型程序&#xff1a; 出现如下的错误提示&#xff1a; from datasets.utils import _datasets_server,file_utils ImportError: cannot import name _datasets_server from datasets.utils (D:\PycharmProjects\minicpm_cuda_test\ve…

【保姆级讲解C语言中的运算符的优先级!】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

Java-文件操作和IO

文件介绍 文件本身有多重含义,狭义的文件,特指硬盘上的文件(以及保存文件的目录),广义的文件:计算机上的很多硬件设备,软件资源,在操作系统中,都会被视为是"文件" 文件除了有数据内容之外,还有一部分信息,例如文件名,文件类型,文件大小,这些信息可以称作文件的元信…

【Android】通知的使用

使用通知 通知&#xff08;notification&#xff09;是Android系统中比较有特色的一个功能&#xff0c;当某个应用程序希望向用户发出一些提示信息&#xff0c;而该应用程序又不在前台运行时&#xff0c;就可以借助通知来实现。发出一条通知后&#xff0c;手机最上方的状态栏中…

YOLO:VOC格式数据集转换为YOLO数据集格式

作者&#xff1a;CSDN _养乐多_ 本文将介绍如何将目标检测中常用的VOC格式数据集转换为YOLO数据集&#xff0c;并进行数据集比例划分&#xff0c;从而方便的进行YOLO目标检测。 文章目录 一、将VOC格式数据集转换为YOLO格式数据集二、YOLO格式数据集划分&#xff08;训练、验…

FreeRTOS中的动态内存管理(heap_1、heap_2、heap_3、heap_4)

FreeRTOS 提供了多种动态内存分配方案&#xff0c;这些方案通过不同的内存管理器&#xff08;heap managers&#xff09;实现&#xff0c;主要位于 FreeRTOS/Source/portable/MemMang 目录下。以下是几种常见的动态内存分配方案&#xff1a; heap_1 特点&#xff1a; 简单性…

电脑添加虚拟网卡与ensp互联,互访

一、按照过程 1、打开设备管理器 2、点击网络适配器&#xff0c;点击左上角操作&#xff0c;点击“添加过时硬件” 3、下一页 4、选择“安装我手动从列表选择的硬件”&#xff0c;下一页 5、下拉&#xff0c;选择“网络适配器”&#xff0c;下一页 6、厂商选择“Microsoft”&…

内网穿透--LCX+portmap转发实验

实验背景 通过公司带有防火墙功能的路由器接入互联网&#xff0c;然后由于私网IP的缘故&#xff0c;公网 无法直接访问内部web服务器主机&#xff0c;通过内网其它主机做代理&#xff0c;穿透访问内网web 服务器主机 实验设备 1. 路由器、交换机各一台 2. 外网 kali 一台&…

设计测试用例的具体方法

一.等价类 等价类分为: 1.有效等价类 [6~15] 2.无效等价类 :小于6位,大于15位(不在数据范围内) 组合规则: 有效等价类组合的时候,尽可能一条测试用例尽可能多的覆盖有效等价类 无效等价类组合的时候,一条测试点,之恶能覆盖一个无效等价类 二.边界值 1.上点,离点,内点 上…

Shader入门精要总结(二)矩阵

1. 矩阵乘法 一个rn的矩阵A和一个nc的矩阵B相乘&#xff0c;它们的结果AB将会是一个rc大小的矩阵&#xff0c;不满足此规则不能相乘 矩阵乘法满足一些性质 矩阵乘法不满足交换律 即AB≠BA矩阵乘法满足结合律 (AB)CA(BC) 2. 特殊矩阵 方块矩阵 指行和列数目相等的矩阵&#x…

谷粒商城实战笔记-103~104-全文检索-ElasticSearch-Docker安装ES和Kibana

文章目录 一&#xff0c;103-全文检索-ElasticSearch-Docker安装ES1&#xff0c;下载镜像文件2&#xff0c;Elasticsearch安装3&#xff0c;验证 二&#xff0c;104-全文检索-ElasticSearch-Docker安装Kibana1&#xff0c;下载镜像文件2&#xff0c;kibana的安装3&#xff0c;验…

繁简之争:为什么手机芯片都是 ARM

RISC 和 CISC 指令集 之前的文章《揭秘 CPU 是如何执行计算机指令的》中说到&#xff0c;如果从软件的角度来讲&#xff0c;CPU 就是一个执行各种计算机指令&#xff08;Instruction Code&#xff09;的逻辑机器。 计算机指令集是计算机指令的集合&#xff0c;包括各种类型的…

【Android Studio】彻底卸载

文章目录 卸载程序控制面板卸载安全软件卸载 删除文件重启计算机 我们在Android开发时涉及重装时&#xff0c;如果卸载不干净&#xff0c;再次安装是不会正常运行项目的&#xff0c;接下来就让我教你如何删除干净吧。 卸载程序 控制面板卸载 control控制面板一>程序一>…