sqli-labs复现

news2024/11/26 20:36:34

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
在这里插入图片描述
最后也就查出来了。

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

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

相关文章

docker 安装xxljob

1. 安装mysql镜像 2.初始化xxljob的数据库和表 一、初始化db:https://codechina.csdn.net/mirrors/xuxueli/xxl-job/-/blob/2.3.1/doc/db/tables_xxl_job.sql 对脚本进行修改,添加ROW_FORMATDYNAMIC 安装xxljob 镜像 docker pull xuxueli/xxl-job-admin:2.3.1 …

networkX-02-基础指标

文章目录 1.度1.1 度1.2 入度1.3 出度1.4 加权度1.5 邻居节点1.5.1 邻居节点计算1.5.2 出度邻居节点1.5.3 入度邻居节点 2.节点数、边数3.最短路径3.1 最短路径(不带权重)3.2 最短路径(带权重) 4.计算图中所有的最短路径 教程仓库地址:github networkx_tutorial imp…

肖sir__设计测试用例方法之等价类02_(黑盒测试)

设计测试用例方法之等价类02_(黑盒测试) 一、掌握常用的设计方法: 黑盒测试方法:等价类、边界值,状态迁移法、场景法、判定表、因果图、正交表,(7种) 经验测试方法:错误推测法、异常…

file.raw和file在formdata中上传时遇到的坑!!

首先是这样,我在写一个表单上传页面的时候,结合elementeplus遇到了需要上传图片文件和视频文件的情况,一顿上网猛搜,经过一二十篇博客浏览下来,找到了三四篇可以参考,但是对于到底是上传file还是file.raw说…

通过ref 操作dom , 点击按钮后跳转到页面指定图片位置

滚动图片到视图 定义了一个名为 scrollToIndex 的函数,它接受一个参数 index。当按钮被点击时,这个函数会被调用,并根据传入的 index 值来滚动到对应的图片。 以 alt 来标记图片位置 alt“Tom” import { useRef } from "react";c…

【开发语言】C语言与Python的互操作详解

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

JDK8安装及系统变量配置(包含错误处理)

jdk安装 一.下载JDK二.安装三.配置系统变量四.可能遇到的问题1.显示已经安装的问题 或者 读取注册表项值失败2.原因3.解决 五.验证安装成功 一.下载JDK JDK下载官网 二.安装 双击之后,一直下一步就ok 三.配置系统变量 1.找到配置系统变量的地方 2.配置系统变…

[E2E Test] Python Behave Selenium 一文学会自动化测试

前言 本文将使用Python Behave与Selenium,和同学们一起认识自动化测试,并附上完整的实践教程。 项目源码已上传:CSDN 郭麻花 Azure Repo python-behave-selenium 核心概念 1. 什么是E2E Test E2E即End-to-end,意思是从头到尾…

Linux执行命令

命令格式 主命令 选项 参数(操作对象)例如: 修改主机名 hostname set-hostname 新名称显示/目录下的文件的详细信息 ls -l /命令 内置命令(builtin):shell程序自带的命令。 外部命令:有独立…

tensorRT从零起步高性能部署:课程总结

目录 前言1. cuda驱动API2. cuda运行时API3. tensorRT基础4. tensorRT高级5. tensorRT封装6. 自动驾驶案例项目总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍&…

1、Flutter移动端App实战教程【环境配置】

一、概述 Flutter是Google用以帮助开发者在IOS和Android 两个平台开发高质量原生UI的移动SDK,一份代码可以同时生成IOS和Android两个高性能、高保真的应用程序。 二、渲染机制 之所以说Flutter能够达到可以媲美甚至超越原生的体验,主要在于其拥有高性…

自然语言处理:提取长文本进行文本主要内容(文本意思)概括 (两种方法,但效果都一般)

本文主要针对长文本进行文本提取和中心思想概括&#xff0c;原文档放在了附件里面&#xff1a;<科大讯飞公告> -----------------------------------方法一&#xff1a;jieba分词提取文本&#xff08;句子赋分法&#xff09;------------------------- 1、首先导入相关…

docker笔记7:Docker微服务实战

1.通过IDEA新建一个普通微服务模块 建Module docker_boot 改POM <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi…

【聚类】K-Means聚类

cluster&#xff1a;簇 原理&#xff1a; 这边暂时没有时间具体介绍kmeans聚类的原理。简单来说&#xff0c;就是首先初始化k个簇心&#xff1b;然后计算所有点到簇心的欧式距离&#xff0c;对一个点来说&#xff0c;距离最短就属于那个簇&#xff1b;然后更新不同簇的簇心&a…

nginx中模块的设置以及反向代理

nginx设置 nginx http 模块的配置文件位于 "/apps/nginx/conf/nginx.conf"&#xff08;以自己安装时选择的目录为准&#xff0c;若使用yum安装&#xff0c;则在 /etc/nginx/nginx.conf&#xff09;。在该文件中&#xff0c;需要定义一些常见的配置项&#xff0c;包括…

《Communicative Agents for Software Development》全文翻译

《Communicative Agents for Software Development》- 沟通性智能主体促进软件开发 论文信息Abstract1. Introduction2. CHATDEV2.1 聊天链2.2 设计2.3 编码2.4 测试2.5 记录 3. 实验4. 讨论5. 相关工作6. 结论 论文信息 题目&#xff1a;《Communicative Agents for Software…

TienChin 渠道管理-查看渠道接口

自定义 hasPermission 校验规则 自定义一个 Spring Security hasPermission 校验规则&#xff1a; 在 tienchin-framework 模块当中进行自定义&#xff0c;新建 CustomSecurityExpressionRoot.java 自定义 hasPermission 判断逻辑类&#xff1a; /*** author BNTang* version 1…

SSM框架-Spring框架核心知识梳理

目录 一、SpringIoC 1.1认识SpringIoC容器 1.2基于xml配置SpringIoC容器 1.3基于xml配置下Bean的生命周期和作用域 1.4 基于xml与注解配置SpringIoC容器 1.5 基于完全注解类配置SpringIoc容器 二、SpringAop面对切面编程 2.1认识SpringAop面向切面编程 2.2SpringAop基…

list【2】模拟实现(含迭代器实现超详解哦)

模拟实现list 引言&#xff08;实现概述&#xff09;list迭代器实现默认成员函数operator* 与 operator->operator 与 operator--operator 与 operator!迭代器实现概览 list主要接口实现默认成员函数构造函数析构函数赋值重载 迭代器容量元素访问数据修改inserterasepush_ba…

数学建模--二维插值函数模型的Python实现

目录 1.算法实现步骤 2.算法核心代码 3.算法效果展示 1.算法实现步骤 #二维插值函数的展示通过Axes3D函数来进行实现 #我们需要绘制出20*20的插值效果和500*500的插值效果,进行比较. 具体步骤如下所示: 1.将x-y分为20*20并且绘制网格图 2.进行20*20的插值计算并且绘制可视化图…