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

news2024/9/21 23:44:40

第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.coloradmin.cn/o/1977035.html

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

相关文章

Java每日一练_模拟面试题2(循环依赖)

一、啥事Spring里面的循环依赖 SpringBoot 循环依赖通常发生在两个或多个Bean相互依赖对方时&#xff0c;例如&#xff1a;A依赖B&#xff0c;同时B也依赖A。 二、如何解决&#xff1f; 解决方案&#xff1a; 构造器注入&#xff1a;如果循环依赖发生在构造器中&#xff0c;S…

[YashanDB认证]YashanDB个人版安装

为什么选择YashanDB? 崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统&#xff0c;经工信部下属机构权威检测&#xff0c;内核代码自主率100%。在经典数据库理论基础上&#xff0c;融入原创的有界计算理论、近似计算理论、并行可扩展理论和跨模融…

Taro学习记录(具体项目实践)

一、安装taro-cli 二、项目文件 三、项目搭建 1、Eslint配置 在项目生成的 .eslintrc 中进行配置 {"extends": ["taro/react"], //一个配置文件&#xff0c;可以被基础配置中的已启用的规则继承"parser": "babel/eslint-parser…

荒原之梦考研:专科考研成功的可能性大吗?

专科还是本科不是决定考研能否成功的关键因素&#xff0c;决定考研能否成功的关键因素是自己是否有清晰的规划、是否有足够的专注能力&#xff0c;以及是否能够吃得了考研的“苦”。 首先要有清晰的规划&#xff0c;比如说&#xff0c;不是我们每个人足够努力就都能考上 TOP1 …

electron-updater实现electron全量更新和增量更新——主进程部分

同学们可以私信我加入学习群&#xff01; 正文开始 前言更新功能所有文章汇总一、更新插件选择二、在main.js中引入我们的更新模块三、更新模块UpdateController.js暴露的方法checkUpdate四、更新模块UpdateController.js中的监听4.1监听是否有新版本需要更新&#xff1f;4.2 监…

红黑树与平衡二叉树的相同之处与不同之处

红黑树很多资料上写的非常繁杂&#xff0c;初次接触真的难以理解。写本文也就是为了记录一些思考和想法&#xff0c;并不会记录如何使用代码实现。 不记录代码还有个原因&#xff1a;黑红树的算法就是根据各种情况进行一些操作&#xff0c;情况很复杂&#xff0c;分插入的和删…

数据结构 二叉树和堆总结

树 概念 树是一种层次结构非线性的数据结构&#xff0c;其是由节点和边组成&#xff0c;可以用来表示层次关系的数据。 树的相关概念 节点&#xff1a;树的基本组成单位&#xff0c;每个节点都包含数据&#xff0c;同时与其他节点相互连接根节点&#xff1a;树的顶层节点&…

SpringBoot_第十一章(Thymeleaf模板引擎)

目录 1&#xff1a;什么是Thymeleaf模板引擎 2&#xff1a;springboot怎使用Thymeleaf 2.1&#xff1a;导入pom文件 2.2&#xff1a;查看ThymeleafAutoConfiguration 3&#xff1a;Thymeleaf核心语法 4&#xff1a;使用Thymeleaf 5&#xff1a;具体语法练习 1&#xff1a…

数据集划分方法

数据集划分是机器学习和数据科学中的一个重要步骤&#xff0c;主要目的是为了确保模型的有效性和可靠性。 留出法&#xff08;简单交叉验证&#xff09; 将数据集划分为互斥的子集&#xff1a;训练集和测试集。 训练集: 用于训练模型。 测试集: 用于评估模型的性能和验证其准确…

图神经网络揭秘:视觉和实用指南

目录 一、说明 二、图如何网络化&#xff1f; 三、你需要知道的 3.1 进入图神经网络 3.2 消息传递 3.3 我们如何处理最终的向量表示&#xff1f; 四、图神经网络&#xff0c;总结 4.1 为什么选择图形神经网络&#xff1f; 4.2 简而言之 一、说明 了解图神经网络的世界&#xff…

C#中投影运算的深入解析与实例应用

文章目录 1、投影运算的基本语法2、投影运算的高级用法3、投影运算在向量空间中的运用4、投影运算在数据库和XML中的实际应用5、投影运算能用于哪些实际场景&#xff1f;6、结论 在C#编程中&#xff0c;投影运算是一种常用的数据操作技术&#xff0c;它可以将一个数据集合转换成…

开放式耳机推荐?时尚潮流品牌:悠律ringbud pro开放式耳机实测测评

作为一位音乐发烧友&#xff0c;什么类型的耳机都体验过&#xff0c;有些几百上千的耳机音质还是差点意思&#xff0c;还是会有听久了感觉不舒服的情况&#xff0c;低音量感不够的问题&#xff0c;直到用了悠律ringbud pro开放式耳机&#xff0c;才算真正打开新世界的大门&…

C语言程序设计-[2] 数据类型、常量和变量

1、数据类型 C语言支持的数据类型如下&#xff1a; 2、常量 常量就是不同数据类型下的值。这里主要讲整型、实型和字符型常量。 &#xff08;1&#xff09;整型常量&#xff1a;用十进制、八进制和十六进制三种形式表示。 &#xff08;1&#xff09;实型常量&#xff1a;由整…

HCIP实验-MGRE

实验拓扑&#xff1a; 实验要求&#xff1a; 1.R2为ISP&#xff0c;其上只能配置IP地址 2.R1-R2之间为HDLC封装 3.R2-R3之间为PPP封装&#xff0c;pap认证&#xff0c;R2为主认证方 4.R2-R4之间为PPP分装&#xff0c;chap认证&#xff0c;R2为主认证方 5.R1、R3、R4构建MG…

unity拖拽物品遇到的bug及解决思路

记录一下拖拽实现过程中遇到的bug RectTransform 专门用在UI中transform 判断点击是否在UI中 使用这个函数就可以判断点击的是否是UI面板&#xff0c;返回true表明在UI面板中 EventSystem.current.IsPointerOverGameObject()值得一提的是&#xff0c;如果发现了有UI穿透效…

【C语言】分支与循环(分支篇)

前言 C语言是一种结构化的计算机语言&#xff0c;这里指的通常是顺序结构、选择结构、循环结构&#xff0c;掌握这三种结构之后我们就可以解决大多数问题。 分支结构可以使用if、switch来实现&#xff0c;而循环可以使用for、while、do while来实现。 1. if语句 1.1 if if…

【滴水三期】32/64位——PE文件节表打印与解析

【作业内容】 1、手动查&#xff0c;画个PE文件图。 2、编写程序打印节表中的信息。 3、根据节表中的信息&#xff0c;到文件中找到所有的节&#xff0c;观察节的开始位置与大小是否与节表中的描述一致 【PE file_buffer文件图】 【IMAGE_SECTION_HEADER解析】 <winNT.h…

web浏览器播放rtsp视频流,海康监控API

概述 这里记录一下如何让前端播放rtsp协议的视频流 ​ 项目中调用海康API&#xff0c;生成的视频流(hls、ws、rtmp等)通过PotPlayer播放器都无法播放&#xff0c;说明视频流有问题&#xff0c;唯独rtsp视频流可以播放。 但是浏览器本身是无法播放rtsp视频的&#xff0c;即使…

Qt3D给圆环等立体图形添加纹理图片

添加纹理图片&#xff0c;首先需要自己找一个纹理图&#xff0c;当然了&#xff0c;随便什么图片都行。 创建3D图形的主要步骤查看另一篇文章。 这里主要代码如下&#xff1a; 使用QTextureLoader加载图片&#xff0c;图片路径需为qrc:/的路径。 auto *planeTransform1 ne…

PyMongo

什么是PyMongo PyMongo 是一个 Python 库&#xff0c;用于与 MongoDB 数据库进行交互。MongoDB 是一个基于文档的 NoSQL 数据库&#xff0c;提供高性能、可扩展性和灵活的架构。PyMongo 提供了一套工具&#xff0c;使得在 Python 程序中操作 MongoDB 变得简单和高效。 安装PyMo…