当前位置: 首页 > 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…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

微服务通信安全:深入解析mTLS的原理与实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言&#xff1a;微服务时代的通信安全挑战 随着云原生和微服务架构的普及&#xff0c;服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...