java-sec-code中的sql注入

news2024/12/27 10:46:43

java-sec-code
用于学习java漏洞代码
环境部署
直接在idea中git 运行即可

sql注入

环境中主要是两个 分别为jdbc和mybatis

jdbc
  1. 存在问题的写法

直接获取用户传入的数据,拼接执行

String sql = "select * from users where username = '"
 + request.getParameter(username)+ "'";
ResultSet rs = statement.executeQuery(sql);

由于这里没有回显,使用延时注入方式进行验证,

http://127.0.0.1:8080/sqli/jdbc/vuln?username=joychou' and if(ascii(substr(database(),1,1))= 106,sleep(5),0) -- +
  1. 预编译写法
username=request.getParameter("username");  
String sql = "select * from users where username = ?";
PreparedStatement st = con.prepareStatement(sql);
st.setString(1, username);

使用 ? 作为占位符,然后使用 setInt() 方法设置参数的值
PreparedStatement 接口会将输入的数据进行转义,例如

joychou变为'joychou'
joychou'变为'joychou\''

防御sql注入问题

mybatis

1,存在漏洞的写法

@Select("select * from users where username = '${username}'")
List<User> findByUserNameVuln01(@Param("username") String username);

$ 占位符是基本的字符串替换操作
会将用户输入与查询语句中的占位符进行替换
靶场测试

这里使用报错注入

http://127.0.0.1:8080/sqli/mybatis/vuln01?username=joychou' and extractvalue(0x0a,concat(0x0a,(select database()))) %23

在这里插入图片描述
使用数据库监控插件查看执行语句,无过滤 ,直接替换执行
在这里插入图片描述

2,预编译写法

@Select("select * from users where username = #{username}")
User findByUserName(@Param("username") String username);

# 占位符是预编译语句(PreparedStatement)的方式。
使用 # 占位符时,MyBatis 会自动使用预编译,将引号字符转义
当输入为joychou’数据库实际上执行的是
select * from users where username = 'joychou\'' 无法利用

Hibernate

存在漏洞的写法

username=request.getParameter("username");
String hql = "from User where username = '" + username + "'";  
Query query = session.createQuery(hql);

预编译写法

String hql = "from User where username = :username";  
Query query = session.createQuery(hql);  
query.setParameter("username", "test"); 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1307690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python源码,在线读取传奇列表,并解析为需要的JSON格式

python源码&#xff0c;在线读取传奇列表&#xff0c;并解析为需要的JSON格式 [Server] ; 使用“/”字符分开颜色&#xff0c;也可以不使用颜色&#xff0c;支持以前的旧格式&#xff0c;只有标题和服务器标题支持颜色 ; 标题/颜色代码(0-255)|服务器标题/颜色代码(0-255)|服务…

小航助学2023年9月电子学会Scratch二级真题(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09; 单选题2.00分 删除编辑附件图文 答案:D 第1题点击绿旗&#xff0c;运行程序后&#xff0c;舞台上的图形是&#xff1f;&#xff08; &#xff09; A、画笔粗细…

小企业必备:实用邮件营销软件推荐

通俗来讲&#xff0c;邮件营销是指通过邮件&#xff0c;与新老客户保持长久互动&#xff0c;把潜在客户转变为企业客户&#xff0c;为宣传企业品牌&#xff0c;提高品牌知名度和影响力&#xff0c;保持长久客户关系的一种简单有效的营销方式。 相较于其他营销方式&#xff0c;…

【FPGA/verilog -入门学习10】verilog 查表法实现正弦波形发生器

0&#xff0c;需求 用查找表设计实现一个正弦波形发生器 寻址的位宽是10位&#xff0c;数据量是1024个&#xff0c;输出的数据是16位 1&#xff0c;需求分析 数据量是1024个&#xff1a; x linspace(0,2*pi,1024) 输出数据是16位: y范围&#xff1a;0~2^16 -1 0~65535…

防火墙访问控制、安全审计、网络设备防护检查表

1、访问控制类检查 2、安全审计类检查 3、网络设备防护类检查 原件&#xff1a; 防火墙标准检查表 分类 测评项 预期结果 访问控制 应在网络边界部署访问控制设备&#xff0c;启用访问控制功能 启用了访问控制规则 应能根据会话状态信息为数据流提供明确的允许/拒绝访…

【JMeter】使用nmon进行性能资源监控

一、前言 ​ 在工作中可能会遇到需要在压测的时候对Linux服务器进行性能资源监控的情况。这时可以用nmon来对服务器进行监控。 二、nmon的下载安装 1.查看系统信息 shell cat /etc/os-release结果为 shell PRETTY_NAME"Debian GNU/Linux 12 (bookworm)" NAME&qu…

《HumanGaussian: Text-Driven 3D Human Generation with Gaussian Splatting》

文章目录 前置知识&#xff1a;一、正文&#xff1a;二、方法 前置知识&#xff1a; \quad 1&#xff09;SMPL&#xff08;Skinned Multi-Person Linear&#xff09;模型 \quad SMPL&#xff08;Skinned Multi-Person Linear&#xff09;模型是一种用于表示人体形状和姿势的三维…

TikTok与虚拟现实的完美交融:全新娱乐时代的开启

TikTok&#xff0c;这个风靡全球的短视频平台&#xff0c;与虚拟现实&#xff08;VR&#xff09;技术的深度结合&#xff0c;为用户呈现了一场全新的娱乐盛宴。虚拟现实技术为TikTok带来了更丰富、更沉浸的用户体验&#xff0c;标志着全新娱乐时代的开启。本文将深入探讨TikTok…

matlab信号分选系统算法-完整算法结构

matlab信号分选系统算法 针对得到的脉冲流PDW进行信号分选&#xff0c;包括重频恒定、重频抖动、重频参差和重频滑变四种脉间调制类型。   这里我们先进行数据的仿真&#xff0c;后续边仿真边分享思路&#xff1a;首先根据信号类型&#xff0c;分别产生重频恒定、重频抖动、重…

陪玩系统最新上线!APP小程序H5三端源码交付,支持二开!开发者必看!

首先&#xff0c;陪玩系统需要提供实时匹配功能。用户输入自己的游戏信息和陪玩需求后&#xff0c;系统需要根据这些信息实时匹配合适的陪玩者。匹配算法应该考虑到游戏类型、玩家水平、价格等因素&#xff0c;以确保匹配结果符合用户期望。 其次&#xff0c;陪玩系统需要提供…

常见的计算机图片格式

左rgb &#xff08;光源色彩&#xff09; 右cmyk &#xff08;印刷色彩&#xff09; 缺点&#xff0c;不能保存&#xff0c;储存空间太大

专为中小培训机构精心打造的教务管理系统

随着互联网的普及和线上教育的兴起&#xff0c;教育机构纷纷开发出自己的小程序管理系统&#xff0c;以满足广大学生和家长的需求。本文将详细介绍如何使用乔拓云平台&#xff0c;一键开发出自己的教育机构小程序管理系统。 一、进入乔拓云后台 在浏览器搜索乔拓云&#xff0c…

【数组Array】力扣-283 移动零

目录 题目描述 解题过程 题目描述 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,…

Shell函数数组练习

1、编写函数&#xff0c;实现打印绿色OK和红色FAILED 判断是否有参数&#xff0c;存在为Ok&#xff0c;不存在为FAILED 2、编写函数&#xff0c;实现判断是否无位置参数&#xff0c;如无参数&#xff0c;提示错误 3、编写函数实现两个数字做为参数&#xff0c;返回最大值 4、…

GB28181学习(十八)——图像抓拍

前言 本文主要介绍图像抓拍功能&#xff0c;通过自研的sip库&#xff08;mysipsdk.dll&#xff09;对接真实设备&#xff0c;使用http方式实现图像数据传输&#xff0c;最终达到图像抓拍与保存的目的。 基本要求 图像格式宜使用JPEG&#xff1b;图像分辨率宜采用与主码流相同…

BSN实名DID服务发布会在北京召开

12月12日&#xff0c;由国家信息中心、公安部第一研究所联合主办&#xff0c;中国移动通信集团有限公司、区块链服务网络&#xff08;BSN&#xff09;发展联盟、中关村安信网络身份认证产业联盟&#xff08;OIDAA&#xff09;承办的“BSN实名DID服务发布会”在北京召开&#xf…

服务器被DDOS攻击如何用高防ip去防护?

什么是 DDoS 攻击&#xff1f;分布式拒绝服务&#xff08;DDoS&#xff09;攻击是通过大规模互联网流量淹没目标服务器或其周边基础设施&#xff0c;以破坏目标服务器、服务或网络正常流量的恶意行为。DDoS 攻击利用多台受损计算机系统作为攻击流量来源以达到攻击效果。利用的机…

CB400X即将停产?NX400上线,本田最新的外观设计直接就国产了?

NX500 之前米兰车展的时候给大家分享过本田对于500系列的升级&#xff0c;并且宣布NX500代替CB500X&#xff0c;采用了全新的外观设计&#xff0c;没有看过的小伙伴可以查阅下之前的文章内容&#xff0c;不过最新的工信部的信息&#xff0c;可以看到NX500的外观设计应用到了CB…

VPN 在网络安全中的应用

虚拟专用网络&#xff08;Virtual Private Network&#xff0c;VPN&#xff09;是指利用不安全的公共网络如 Internet 等作为传输媒介&#xff0c;通过一系列的安全技术处理&#xff0c;实现类似专用网络的安全性能&#xff0c;保证重要信息的安全传输的一种网络技术。 1&#…

sylar高性能服务器-配置(P12-p14)内容记录

文章目录 p12&#xff1a;复杂类型解析一、方法函数二、结果展示 p13&#xff1a;复杂类型解析完善一、方法函数二、结果展示 p14&#xff1a;自定义类型解析一、方法函数二、小结 p12&#xff1a;复杂类型解析 ​ 本节内容主要针对完了配置类中对于复杂类型的转换。之前只实现…