JAVA代码审计JAVA0基础学习(需要WEB基础知识)DAY2

news2024/9/22 17:36:49

JAVA  在    SQL执行当中 分为3种写法:

JDBC注入分析

Mybatis注入分析

Hibernate注入分析

JDBC 模式不安全JAVA代码示例部分特征

定义了一个 sql 参数 直接让用户填入id的内容

一个最简单的SQL语句就被执行了

使用安全语句却并没有被执行

Mybatis:  #   和  $的区别

并没有看见SQL 语句 为什么

因为这个JAVA是调用了两个库这两个库里面有调用SQL的函数

其中不安全的示例代码在user.java的库

在MyBatis中,#$ 用于表示不同的参数插入方式,它们的主要区别在于如何处理参数插入的安全性和方式。

# 标记(Prepared Statement)

  • 安全性: 使用 # 标记,MyBatis 会将参数作为 PreparedStatement 的参数进行处理,自动防止SQL注入攻击。
  • 占位符: 参数会被替换为一个 ? 占位符,然后在执行SQL时,数据库驱动会将实际的参数值绑定到占位符上。
  • 优点: 安全性高,适用于动态参数的情况。
  • 示例:
     sql 

    复制代码

    SELECT * FROM users WHERE name = #{name}

    在这个例子中,#{name} 表示参数name,在生成的SQL语句中会被替换为一个 ?,然后在执行时再绑定实际的参数值。

$ 标记(字符串替换)

  • 安全性: 使用 $ 标记时,MyBatis 直接将参数的值插入到SQL语句中,不进行任何转义或保护,因此存在SQL注入风险。
  • 直接插入: 参数值会被直接拼接到SQL语句中,这在处理列名、表名等结构性元素时比较有用。
  • 优点: 灵活性高,但不适合动态参数的使用,容易产生安全隐患。
  • 示例:
     sql 

    复制代码

    SELECT * FROM users ORDER BY ${column}

    这里,${column} 会被替换为传入的参数值,例如 name,结果是生成类似 ORDER BY name 的SQL语句。

选择使用的建议

  • 对于动态值(如用户输入的字符串、数值等),应该使用 # 来防止SQL注入。
  • 对于动态SQL语句的结构部分(如列名、表名等),如果需要使用动态插入,可以使用 $,但需确保传入的值是可信的,不会导致SQL注入。

Hibernate:

安全写法 写完name=name后先进行了预编译

不安全写法直接拼接

总结

实操-靶场

1.先分析SQL用的哪种模式

在路径中找特征 jdbc  mybatis hibernate  有的写不完整 搜索myba

找到了是myba并且知道了版本

找到了包 或许SQL就是用这个实现的  我们需要进入 看看

继续翻找找到了真正源码一般在resources


article 上下双方的目录是一一对应的

搜不到 # 有问题不知道什么原因没有进行编译 网上搜搜原因老师随便点几下就好了 说不是编译的原因

2.然后找到成功

总结又加了一条 in

因为有IN 所以程序员只能写$value 

这个时候我们就要去实地去测试有没有对那些SQL语句进行过滤

3.把定义的id名进行搜索


搜索点了第一个含有这个函数声明的地方但是没看见任何内容

老师Ctrl shift +h

单击进去看调用

然后审计完之后,发现是要管理员账号登录进去之后 才能进行的注入,需要得到管理员cookie,然后抓包后修改好包的路径  然后 cookie加上 然后把包的内容保存到1.txt

sqlmap.py -r 1.txt 对包进行扫描

对存在注入点加上*让sqlmap识别到

但是为什么在请求体内加上

参数articelld*进行注入我是没看懂的我没有审计到  感觉应该是articlid 这样的话参数我就懂了

有的地方看起来有注入 如下 全是美元符号

为什么注入不成功 因为有int 把我们的符号全变为整数

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

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

相关文章

第13周 简历职位功能开发与Zookeeper实战

第13周 简历职位功能开发与Zookeeper实战 本章概述1. Mysql8窗口函数over使用1.1 演示表结构与数据1.2 案例1:获取男女总分数1.3 案例2****************************************************************************************本章概述 1. Mysql8窗口函数over使用 参考案例…

行业不同怎么选企业管理咨询公司

在选择企业管理咨询公司时,不同行业的企业往往面临着各自独特的挑战和需求。因此,选择一家适合自身行业特点、能够提供专业且有针对性的咨询服务的管理咨询公司至关重要。本文将从行业差异的角度出发,探讨如何根据企业所在行业的不同&#xf…

二维码的生成与识别(python)

二维码生成 from PIL import Image import qrcode from qrcode.image.styledpil import StyledPilImage from qrcode.image.styles.colormasks import SolidFillColorMask from qrcode.image.styles.moduledrawers import SquareModuleDrawer# 创建二维码对象 qr qrcode.QRCo…

智能编程,一触即发:使用AIGC优化CSS——提升前端开发效率与质量

文章目录 一、AIGC在CSS优化中的应用场景智能代码生成自动布局调整性能优化建议样式和色彩建议 二、使用AIGC优化CSS的具体步骤明确需求选择AIGC工具输入描述或设计稿审查和调整集成和测试 三、AIGC优化CSS的优势与挑战优势:挑战: 《CSS创意项目实践&…

vue3前端开发-小兔鲜项目-登录和非登录状态下的模板适配

vue3前端开发-小兔鲜项目-登录和非登录状态下的模板适配&#xff01;有了上次的内容铺垫&#xff0c;我们可以根据用户的token来判定&#xff0c;到底是显示什么内容了。 1&#xff1a;我们在对应的导航组件内修改完善一下内容即可。 <script setup> import { useUserSt…

ATE测试设备ATECLOUD专注于电源模块、电源芯片和射频组件测试

在追求效率与精度的时代背景下&#xff0c;电子测试测量行业迎来了ATE自动化测试设备的革新。这一设备的出现&#xff0c;不仅简化了测试流程&#xff0c;还大幅提高了测试的准确性和速度。 新ATE自动化测试设备&#xff1a;ATECLOUD测试平台 纳米软件深耕电测行业16年&#xf…

算法 day4 【双指针、快慢指针、环形链表】链表下

⚡刷题计划day4继续&#xff0c;可以点个免费的赞哦~ 下一期将会开启哈希表刷题专题&#xff0c;往期可看专栏&#xff0c;关注不迷路&#xff0c; 您的支持是我的最大动力&#x1f339;~ 目录 ⚡刷题计划day4继续&#xff0c;可以点个免费的赞哦~ 下一期将会开启哈希表刷题…

无法连接网络打印机0x00000709原因分析及多种解决方法

在日常办公和生活中&#xff0c;打印机是不可或缺的重要设备。然而&#xff0c;有时在连接打印机的过程中&#xff0c;我们可能会遇到错误代码0x00000709的提示。有更新补丁导致的、有访问共享打印机服务异常、有访问共享打印机驱动异常等问题导致的&#xff0c;针对访问共享打…

实验三 FPGA使用Verilog HDL设计加法器

实验目的 掌握使用Vivado软件进行设计、综合、仿真、布线的方法。掌握FPGA程序的下载方法。掌握使用Verilog HDL设计加法器的方法。 实验要求 采用Verilog HDL语言设计加法器&#xff0c;实现两个4位数的相加运算&#xff0c;并将结果通过LED灯或数码管显示出来。对设计进行综…

如何通过集成软件授权管理系统推动企业业务增长?

软件货币化已经成为许多企业商业成功的关键&#xff0c;随着全球数字化进程不断深入&#xff0c;其重要性也在不断增加。将许可解决方案优化集成到现有系统中&#xff0c;已成为从接收到订单到交付和激活许可的任何高效流程的基本要素。 软件货币化无处不在 无论是传统的软件企…

[言简意赅] Matlab生成FPGA端rom初始化文件.coe

&#x1f38e;Matlab生成FPGA端rom初始化文件.coe 本文主打言简意赅。 函数源码 function gencoeInitialROM(width, depth, signal, filepath)% gencoeInitialROM - 生成 Xilinx ROM 初始化格式的 COE 文件%% 输入参数:% width - ROM 数据位宽% depth - ROM 数据深度% s…

在 LCD 上显示 png 图片-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

在 LCD 上显示 png 图片 PNG 简介 无损压缩&#xff1a;PNG 使用 LZ77 派生算法进行无损压缩&#xff0c;确保图像质量不受损&#xff0c;且压缩比高 体积小&#xff1a;通过高压缩比&#xff0c;PNG 文件体积小&#xff0c;适合网络传输 索引彩色模式&#xff1a;PNG-8 格式…

Unity UGUI 之 RectTransform

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 Unity - Manual: Rect Transform 1.Rect Transform是什么 2.轴心与锚点的映射关系 首先…

获取后端返回的图形验证码

如果后端返回的直接就是一个图形&#xff0c;有以下几种方式展示 一、直接在img标签里面的src里面调用接口 <img :src"dialogSrc" class"photo" alt"验证码图片" click"changeDialog">let orgUrl "/api/captcha" …

论文解读:DiAD之SG网络

目录 一、SG网络功能介绍二、SG网络代码实现 一、SG网络功能介绍 DiAD论文最主要的创新点就是使用SG网络解决多类别异常检测中的语义信息丢失问题&#xff0c;那么它是怎么实现的保留原始图像语义信息的同时重建异常区域&#xff1f; 与稳定扩散去噪网络的连接&#xff1a; S…

机器学习(二十):偏差和方差问题

一、判断偏差和方差 以多项式回归为例&#xff0c;红点为训练集数据&#xff0c;绿点为交叉验证数据。 下图的模型&#xff0c;训练集误差大&#xff0c;交叉验证集误差大&#xff0c;这代表偏差很大 下图的模型&#xff0c;训练集误差小&#xff0c;交叉验证集误差小&#x…

Linux网络:传输层协议TCP(二)三次挥手四次握手详解

目录 一、TCP的连接管理机制 1.1三次握手 1.2四次挥手 二、理解 TIME_WAIT 状态 2.1解决TIME_WAIT 状态引起的 bind 失败的方法 三、理解CLOSE_WAIT状态 一、TCP的连接管理机制 在正常情况下, TCP 要经过三次握手建立连接, 四次挥手断开连接 1.1三次握手 三次握手顾名思…

vue import from

vue import from 导入文件&#xff0c;从XXXX路径&#xff1b;引入文件 import xxxx from “./minins/resize” import xxxx from “./minins/resize.js” vue.config.js 定义 : resolve(src)&#xff1b;就是指src 目录 import xxxx from “/utils/auth” im…

vue3知识

目录 基础vue开发前的准备vue项目目录结构模板语法属性绑定条件渲染列表渲染通过key管理状态事件处理事件传参事件修饰符数组变化侦测计算属性Class绑定style绑定侦听器表单输入绑定模板引用组件组成组件嵌套关系组件注册方式组件传递数据Props(父传子)组件传递多种数据类型组件…

怎么批量加密U盘?U盘批量加密的方法有哪些?

加密U盘是保护U盘数据安全的重要方法。而当需要加密的U盘数量较多时&#xff0c;我们需要批量加密U盘。那么&#xff0c;U盘怎么批量加密呢&#xff1f;下面我们就来了解一下。 U盘内存卡批量只读加密专家 U盘内存卡批量只读加密专家是一款专业的U盘加密软件&#xff0c;适用于…