JAVA代码审计JAVA0基础学习(需要WEB基础知识)DAY2
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 把我们的符号全变为整数
相关文章:

JAVA代码审计JAVA0基础学习(需要WEB基础知识)DAY2
JAVA 在 SQL执行当中 分为3种写法: JDBC注入分析 Mybatis注入分析 Hibernate注入分析 JDBC 模式不安全JAVA代码示例部分特征 定义了一个 sql 参数 直接让用户填入id的内容 一个最简单的SQL语句就被执行了 使用安全语句却并没有被执行 Mybatis: #…...

SpringBoot整合elasticsearch-java
一、依赖 系统使用的是ElasticSearch8.2.0 <dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.1.0</version> </dependency> 二、配置 1、yml文件配置 elastics…...

网络服务与应用
一、 文件传输 FTP 1、FTP采用典型的C/S架构(即服务器端和客户端模型),客户端与服务器端建立TCP连接之后即可实现文件的上传、下载。 2、FTP传输过程 1)、主动模式(POST):入站连接 2&#x…...
Git项目如何配置,如何上传至GitHub
Git项目配置并上传至GitHub的详细步骤如下: 一、准备工作 创建GitHub账号: 访问GitHub官网,点击“Sign up”注册新账号。填写相关信息,包括用户名、邮箱和密码,完成账号创建。安装Git客户端: 访问Git官网…...

Python教程(一):环境搭建及PyCharm安装
目录 引言1. Python简介1.1 编译型语言 VS 解释型语言 2. Python的独特之处3. Python应用全览4. Python版本及区别5. 环境搭建5.1 安装Python: 6. 开发工具(IDE)6.1 PyCharm安装教程6.2 永久使用教程 7. 编写第一个Hello World结语 引言 在当…...

神经网络与注意力机制的权重学习对比:公式探索
神经网络与注意力机制的权重学习对比:公式探索 注意力机制与神经网络权重学习的核心差异 在探讨神经网络与注意力机制的权重学习时,一个核心差异在于它们如何处理输入数据的权重。神经网络通常通过反向传播算法学习权重,而注意力机制则通过学…...

C语言------指针讲解(3)
一、字符指针 在指针中,我们知道有一类指针类型为字符指针char*; int main() {char ch w;char* pc &ch;*pc w;return 0; } 还有一种使用方式如下: 上述代码中,本质是把hello的首字符的地址放到了pstr中。即把一个常量字符串的首字符…...
博客建站 - 常用的公共DNS服务器
国内公共DNS服务 服务器名称首选DNS服务备用DNS服务114 DNS114.114.114.114114.114.115.115阿里 DNS223.5.5.5223.6.6.6腾讯云公共DNS119.29.29.29182.254.116.116百度公共DNS180.76.76.76110.242.68.68 国外公共DNS服务 服务器名称首选DNS服务备用DNS服务备注Google DNS8.8…...
用Redisson的RMap做一个简单的购物车示例
RMap是Redisson提供的一个高级数据结构,它封装了Redis中的Hash数据类型,提供了一个类似Java HashMap的接口。RMap非常适合在需要分布式共享的键值对集合场景中使用,以下是一些典型的应用场景: 分布式缓存: RMap可以用作…...

「12月·长沙」第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)
随着科技的飞速发展,智能机器人在当今社会的重要性愈发凸显。从制造业的自动化生产线,到医疗领域的手术机器人,再到家庭生活中的智能助手,机器人与人工智能的融合正在改变着我们的生产和生活方式。第四届机器人、自动化与智能控制…...

传神社区|数据集合集第7期|法律NLP数据集合集
自从ChatGPT等大型语言模型(Large Language Model, LLM)出现以来,其类通用人工智能(AGI)能力引发了自然语言处理(NLP)领域的新一轮研究和应用浪潮。尤其是ChatGLM、LLaMA等普通开发者都能运行的…...

完美解决Ubuntu的MySQL临时文件夹修改调整
打开终端,输入以下命令 $ sudo -i # 切换root用户 $ systemctl stop mysql.service $ mkdir /home/tmp $ chown root:root /home/tmp $ chmod 1777 /home/tmp $ gedit /etc/mysql/mysql.conf.d/mysqld.cnf以上最后一条命令执行完后,在打开的mysqld.cnf文…...
shell基础编程
初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语、英语 计算机语言:c语言、c、(java php python go shell) 编译型语言 c c java 解释型语言 php python bash 编译型语言:编译型语言的首先将源代码编译生成机器语言,再由机…...

近期代码报错解决笔记
1.TypeError: ‘bool’ object is not callable 想print("Type of head:", type(entity_emb[head])),结果报如下错误: 源代码: 因为 print 仍然被当作一个布尔值处理,而不是作为函数调用。这个问题的根源在于 print …...
apache设置ssl代理
<VirtualHost *:8082> ServerName localhost DocumentRoot D:\xampp\htdocs\somgl\dist #证书 SSLProtocol all -SSLv2 SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:3DES SSLEngine on SSLProxyEngine on SSLProxyVerify…...
数据库中单表的查询(select)
单表查询 所有的查找都会得到一张虚拟表 一、 最简单的查询 SELECT 123; SELECT asd; SELECT 11;二、 从表中获取数据 select 字段名,字段名 from 表名 2.1 全字段查询 SELECT sid,sname,birthday,ssex,classid FROM student; SELECT * FROM student; -- 使用*不利于s…...

Spring源码-BeanFactory类关系层级
BeanFactory 访问Spring bean容器的根接口。 这是bean容器的基本客户端视图;例如{link ListableBeanFactory}和{link org.springframework.beans.factory.config。ConfigurableBeanFactory}可用于特定目的。 这个接口是由包含许多bean定义的对象实现的,每个bean定义…...

Electron 结合 Selenium + chromedriver 驱动服务实现浏览器多开
背景 在调研浏览器多开的过程中,electron 有自带的 browserview,webview,但是上面两个受制于 electron 内核版本限制,升级不够灵活,对新版的网页支持可能不及时,甚至不兼容,必须通过发布新的客…...

手持式气象检测设备:便携科技,气象探测
一、手持式气象检测设备:小巧身躯,大能量 手持式气象检测设备,顾名思义,是一种可以手持操作的气象监测工具。它集成了温度、湿度、气压、风速风向等多种传感器,能够实时获取气象数据,并通过显示屏或手机APP…...
shell 发送邮件脚本(免密)
#!/bin/bash ENV$1 TARGET_VERSION$2 TO$3 # SMTP服务器设置 SMTP_SERVER"邮箱服务地址" SMTP_PORT"25"# 邮件信息 FROM"jenkinsy.com" SUBJECT"Deployment Status Notification" BODY$ENV"发布完成,版本 :…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...