MyBatis的注入问题

对之前文章的补充:MyBatis中的#{}与${}注入问题----原文链接

前言:

MyBatis是一个流行的Java持久层框架,用于将对象与数据库中的数据进行映射。然而,如果不当使用,MyBatis也可能受到诸如SQL注入这类的安全问题的影响。

SQL注入是一种攻击技术,攻击者通过在输入中插入恶意SQL语句片段,企图对数据库执行非预期的操作。在MyBatis中,SQL注入通常发生在以下几个场景:

动态SQL: MyBatis允许你编写动态SQL,根据不同的条件拼接不同的SQL语句。如果你直接将用户的输入作为条件拼接到SQL语句中,而没有进行适当的转义或验证,就可能导致SQL注入。

接着上面文章,发现一般在实际情况 中会存在以下几个方面的注入情况:

Mybatis Like 注入

这里如果是正常的查询请求,会返回正常的查询结果,然而在使用了恶意的注入语句,就可以直接查看到注入的结果,存在注入漏洞

通过在这里直接搜索相关的注入写法

就能发现如下的查询语句:

这就存在SQL注入漏洞了,所以需要规范代码写法:
Select * from users where username like concat('%',#{username}, '%')

Mybatis Order By 注入

直接查看源代码中的写法

Order By 注入也是一样,在正常的查询中,添加恶意的代码,就能直接造成代码的注入,这里报错回显


Mybatis In 注入

in之后多个id查询时使用 # 同样会报错,因此很多研发会采用${}来解决,从而造成SQL注入,

直接使用poc:1,2,3) and (updatexml(1,concat(0x7e,(select user())),0))-- -


这里主要是对之前学习的补充,完善整个注入的内容,感谢大佬指点交流

相关推荐
Lyyaoo.32 分钟前
Redis基础
数据库·redis·缓存
杨云龙UP1 小时前
ODA登录ODA Web管理界面时提示Password Expired的处理方法_20260423
linux·运维·服务器·数据库·oracle
解救女汉子1 小时前
SQL触发器如何获取触发源应用名_利用APP_NAME函数追踪
jvm·数据库·python
weixin_520649873 小时前
数据库函数
数据库
Bert.Cai3 小时前
MySQL LPAD()函数详解
数据库·mysql
OnlyEasyCode4 小时前
Navicat 任务自动备份指定数据库
数据库
if else5 小时前
Redis 哨兵集群部署方案
数据库·redis
yejqvow125 小时前
Pandas 高效实现组内跨行时间戳匹配与布尔标记
jvm·数据库·python
了不起的云计算V5 小时前
从DeepSeek V4适配看国产算力的三个拐点
数据库·人工智能
qq_189807035 小时前
html标签如何提升可访问性_aria-label与title区别【指南】
jvm·数据库·python