Day66:WEB攻防-Java安全&SPEL表达式&SSTI模版注入&XXE&JDBC&MyBatis注入

MyBatis支持两种参数符号,一种是#,另一种是KaTeX parse error: Expected 'EOF', got '#' at position 4: ,**#̲使用预编译,使用拼接SQL。(造成注入原因也是因为使用了$进行拼接)**

order by 造成SQL注入:由于使用#{}会将对象转成字符串,形成order by “user” desc造成错误,因此很多研发会采用${}来解决,从而造成注入

这个SQL语句的目的是将0x7e以及当前用户的用户名插入到指定的XML字段中,从而执行恶意操作或泄露敏感信息。

  • 第一个参数是要更新的XML字段
  • 第二个参数是XPath表达式  ~admin
  • 第三个参数是要更新的新值。

在这个例子中,使用了concat函数来拼接字符串,包括特殊字符0x7e(波浪符)以及查询当前用户的子查询select user()。

like 注入:模糊搜索时,直接使用’%#{q}%’ 会报错,部分研发图方便直接改成’%${q}%'从而造成注入.

in注入:in之后多个id查询时使用 # 同样会报错,从而造成注入.

白盒审计

在真实情况下,需要先分析源码里用了那种方式操作数据库(JDBC还是MyBatis),然后在针对性看代码写法,JDBC如果没用到安全写法,那么就容易出现问题。MyBatis看代码用了KaTeX parse error: Expected 'EOF', got '#' at position 3: 还是#̲,#号就可以不用看了,符号就看是不是在order by、like、in里面,在就恭喜了。

代码审计案例:inxedu后台MyBatis注入

1、配置安装源码

端口要与配置文件一致

默认/inxedu_war路径即可

启动项目后报错:

2、代码审计分析

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值