当前位置: 首页 > news >正文

sqli-labs复现

sqli-labs第一关复现

  • 环境搭建
    • 下载phpstudy
    • 下载sqli-labs
    • 浏览器加载
  • 第一关复现

环境搭建

下载phpstudy

phpstudy是一个可以快速帮助我们搭建web服务器环境的软件

官网:https://www.xp.cn/

这里我选择的是windows 64bit 客户端版本,安装路径为C:\phpstudy

安装完后打开软件
在这里插入图片描述
选择上面的WNMP,进行启动。然后点击网站进行一些修改
在这里插入图片描述
目录的内容看下面

下载sqli-labs

sqli-labs:https://github.com/Audi-1/sqli-labs

进入github下载源码,进入c:/phpstudy/www目录,也就是我们localhost配置的网站目录

删除里面的文件,并将下载好的压缩包解压到www目录下,如下
在这里插入图片描述
对sqli-labs初始化文件进行配置
在这里插入图片描述

浏览器加载

然后打开浏览器
在这里插入图片描述
这里需要点击第二行的Setup/reset Database for labs 配置数据库,成功如下
在这里插入图片描述
这里大家可能会出现这样的错误
在这里插入图片描述
出现这个问题很简单,去到phpstudy的网站里面去修改你的php版本,版本过高是无法实现的。
然后
在这里插入图片描述
就OK了。

第一关复现

首先,我们需要了解注入是怎么产生的
注入的产生,是因为程序过滤不严谨,没有将用户的输入进行过滤,没有过滤那么如果输入恶意代码,注入数据库就将产生问题,出现数据库的异常查询。

一般注入的重点也就是分析源码。

那么我们来看一下第一关
看一下源码。
源码就是在我们下载的文件中就存在
在这里插入图片描述
分析源码我们得知:
首先是,数据库的连接,然后通过GET传参给id,然后再打开一个文件,再通过写入文件的句柄,id写入,然后关闭。之后再进行查询,查询出一个数组之后,比对,存在,就从数组取值,并且输出到前端,还使用样式包装,没有则报错,输出到前端。没有传参,就提醒用户输入。

源码分析可能不容易理解,那我们到前端看一些是什么情况。
在这里插入图片描述
传个参数。
在这里插入图片描述
好像没啥作用,就输出了id为1的数据。
通过对源码的分析,name和passwd应该出数据的地方,也就是用户名和密码,但是我们目前没有显示出来分明显,我们没有实现注入。

那我们再去查看源码

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

这里是查找数据的,我们传入了1,那么这里就查1。
但如果我们改变一下。
在这里插入图片描述
但是这里又出现了报错,语法问题。我们也可以理解,毕竟我们多出来了一个单引号,无法闭合,出错正常。那么我们是不是可以通过单引号逃逸出来。

既然可以逃逸,那么之后我们要干什么呢,为了数据啊,那么我们就需要为了管理员的数据去研究。

首先我们了解查询方式。
第一种:联合查询 union select
第二种:and

那么联合查询可以做什么呢

select * from users union select * from emails;

这句代码的意思就是,将表users和emails放在一起查询数据。
但联合查询存在一个前提:两张表的列需要保持一致。不一致将查询不出来。
我们目前不知道表的列数怎么办呢

select * from users union select 1,2,3;

模糊测试,我们假设存在3列,然后查询,如果出现错误,那就增加或减少,这样一个一个测试,我能就可以实现列的查找。

and的方法

select * from users and 1=1

这种也是查询的一种。

既然我们想要入侵管理员,那我们需要获得管理员的用户名和密码。
想得到呢,就需要知道数据的数据库名,库名,表名,列名。

一般是查询,mysql版本号,查询权限,登录用户,当前所在数据库。

针对列数,我们也可以使用 order by 函数,来确定列,order by主要是排序。因为排序可以使用1,来代表第一列,2,来代替第二列,多出的列数将会报错,那么我们也就知道列数了。

除此之外,我们还需要知道,注释符。
单行注释 – #
多行注释/**/

目前我们闭合,多出的去注释,去逃逸尝试一下。
在这里插入图片描述
这里后面还有一个引号,出现报错,我们通过注释符注释掉
在这里插入图片描述
再url里面注释,从–空格变为了–+。
出来了内容了,那我们就开判断一下列数。
在这里插入图片描述
在这里插入图片描述
我们这只存在3列。
我们来联合查询
在这里插入图片描述
这里的联合查询好像和我们输入为1没啥区别。
注意:联合查询需要前面的条件为假。为假,那么我们就输入符数,一般无符号整型,-1不满足
在这里插入图片描述
输出2,3这里表示的是前端可以展示出来的列数,也就是2和3字段出数据,也就是可以在前端显示。

那么我们就可以看看其他的内容
在这里插入图片描述
用户和版本就输出了。
在这里插入图片描述
库名也可以出来了。

http://localhost:9005/Less-1/?id=-1%27%20union%20select%201,concat(table_name),3%20from%20mysql.innodb_table_stats%20where%20database_name=%27security%27%20--+

利用这个可以得表名。
通过添加limit 1,1依次获得其他表明,最后找到users

列名如何查到
在这里插入图片描述
获得了id
在这里插入图片描述
获得username
在这里插入图片描述
最后password
在这里插入图片描述
最后也就查出来了。

相关文章:

sqli-labs复现

sqli-labs第一关复现 环境搭建下载phpstudy下载sqli-labs浏览器加载 第一关复现 环境搭建 下载phpstudy phpstudy是一个可以快速帮助我们搭建web服务器环境的软件 官网:https://www.xp.cn/ 这里我选择的是windows 64bit 客户端版本,安装路径为C:\php…...

k8s入门到实战--跨服务调用

service.png 背景 在做传统业务开发的时候,当我们的服务提供方有多个实例时,往往我们需要将对方的服务列表保存在本地,然后采用一定的算法进行调用;当服务提供方的列表变化时还得及时通知调用方。 student: url: - 192.168.1…...

小程序中使用分包

前言 小程序在未使用的分包的情况下仅支持大小为2M,如果图片等资源过多的情况下可以使用分包功能,使用分包的情况下单个分包大小不能超过2M,总大小不能超过20M,分包有两种情况:普通分包和独立分包,下面介绍的是普通分包。官方文档…...

python官方标准库

文章目录 1. 标准库2. Python标准库介绍3. 示例 1. 标准库 https://docs.python.org/zh-cn/3/library/ https://pypi.org/ 2. Python标准库介绍 Python 语言参考手册 描述了 Python 语言的具体语法和语义,这份库参考则介绍了与 Python 一同发行的标准库。它还描…...

Python Opencv实践 - 霍夫圆检测(Hough Circles)

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/steelpipes.jpg") print(img.shape) plt.imshow(img[:,:,::-1])#转为二值图 gray cv.cvtColor(img, cv.COLOR_BGR2GRAY) plt.imshow(gray, cmap plt.cm.gray…...

异步请求库的实际应用案例:爬取豆瓣经典电影

在日常爬虫过程中,你有没有遇到过需要爬取大量数据的情况,但是传统的同步请求方式让您等得焦头烂额? 这个问题的根源在于传统的同步请求方式。当我们使用同步请求时,程序会一直等待服务器的响应,直到数据返回后才能继续…...

数据结构学习系列之两个单向链表的合并

两个单向链表的合并:创建两个单向链表p1和p2,合并p1和p2即可,代码如下:示例代码: int merge_2_link_list(node_t *p1,node_t **p2){if(NULL p1 || NULL p2 || NULL *p2){printf("入参合理性检查\n");ret…...

java网络编程,套接字socket

目录 一 网络概述 二 网络的类型分类 三 网络体系结构 四 网络通信协议概述 五 网络通信协议种类 六 Socket简介 七 Socket路径 八 java网络编程三要素 九 基于UDP协议的Socket编程 十 基于TCP协议的Socket编程 十一 基于TCP协议和UDP的区别 一 网络概述 多台相互连…...

一日一技:Python如何同时调用多个GPT的API?

相信很多同学或多或少都在Python中使用过GPT API,通过Python安装openai库,来调用GPT模型。 OpenAI官方文档中给出了一个示例,如下图所示: OpenAI API 测试 如果你只有一个API账号,那么你可能不觉得这样写有什么问题。…...

【云原生】Docker环境安装

文章目录 一、安装准备1、前提条件2、查看系统内核3、查看已安装的CentOS版本信息 二、CentOS7安装docker1、安装需要的软件包2、设置docker下载镜像3、更新yum软件包索引4、安装docker ce5、启动docker6、版本验证7、设置开机启动 三、卸载 Docker 是一个开源的应用容器引擎&a…...

56、springboot ------ RESTful服务及RESTful接口设计

★ RESTful服务 RESTful服务是“前后端分离”架构中的主要功能&#xff1a; 后端应用对外暴露RESTful服务&#xff0c;前端应用则通过RESTful服务与后端应用交互。后端应用 RESTful接口 <------------------> 前端★ 基于JSON的RESTful服务 使用RestController注解…...

sysmonitor如何使用

Sysmonitor是一个系统监控工具&#xff0c;可以监视系统资源的使用情况&#xff0c;如CPU、内存、磁盘、网络等。以下是使用Sysmonitor的步骤&#xff1a; 打开终端或命令行界面&#xff0c;输入以下命令安装Sysmonitor&#xff1a; sudo apt-get install sysmonitor安装完成…...

视频监控/视频汇聚/安防视频监控平台EasyCVR如何将默认快照的raw格式改为jpg/base64格式?

视频监控/视频汇聚/安防视频监控平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。视频云存储EasyCVR平台能在复…...

QRCode.js生成的二维码水平居中的解决方案

在使用qrcode.js库生成二维码&#xff0c;并希望生成的二维码能够在其容器中居中。 以下是一个简单的例子&#xff0c;它展示了如何使用qrcode.js生成二维码&#xff0c;并通过CSS将其居中&#xff1a; HTML代码 <div id"qrcode-container"><div id"…...

在Cisco设备上配置接口速度和双工

默认情况下&#xff0c;思科交换机将自动协商速度和双工设置。将设备&#xff08;交换机、路由器或工作站&#xff09;连接到 Cisco 交换机上的端口时&#xff0c;将发生协商过程&#xff0c;设备将就传输参数达成一致&#xff0c;当今的大多数网络适配器都支持此功能。 在本文…...

增益带宽积GBW

增益带宽积GBW 增益带宽积是指放大电路在单位增益下的工作频率范围&#xff0c;通常用于描述放大器的高低频特性。增益带宽积越大表示放大器能够传输更高的频率信号而不降低增益。 1.增益带宽积的概念 增益带宽积是指在放大器的这样一个频带内&#xff0c;其实际的电压增益值等…...

二分搜索树节点的查找(Java 实例代码)

目录 二分搜索树节点的查找 Java 实例代码 src/runoob/binary/BinarySearchTreeSearch.java 文件代码&#xff1a; 二分搜索树节点的查找 二分搜索树没有下标, 所以针对二分搜索树的查找操作, 这里定义一个 contain 方法, 判断二分搜索树是否包含某个元素, 返回一个布尔型变…...

2.9 PE结构:重建导入表结构

脱壳修复是指在进行加壳保护后的二进制程序脱壳操作后&#xff0c;由于加壳操作的不同&#xff0c;有些程序的导入表可能会受到影响&#xff0c;导致脱壳后程序无法正常运行。因此&#xff0c;需要进行修复操作&#xff0c;将脱壳前的导入表覆盖到脱壳后的程序中&#xff0c;以…...

MybatisPlus插件功能详细介绍 自动分页 通用分页实体

本课程全面讲解了Mybatis框架的使用&#xff0c;从快速入门到原理分析再到实战应用。每一个知识点都有案例进行演示学习&#xff0c;最终通过学习你将全面掌握&#xff0c;从而使Mybatis的开发更加的高效&#xff0c;系统学习 通过项目的开发大家应该能发现&#xff0c;单表的C…...

ES kibana 创建索引快速脚本

删除 DELETE my_test创建索引 创建自定义ngram分词器 PUT my_test {"settings": {"index.max_ngram_diff": "32","analysis": {"analyzer": {"code_analyzer": {"tokenizer": "code_tokenizer&q…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...