qq_43304875 2023-01-11 15:39 采纳率: 40%
浏览 17
已结题

mybatis - sql注入疑惑

问题遇到的现象和发生背景

mybatis - sql注入疑惑

依赖:

  1. springboot
  2. mybatis
    遇到的现象和发生背景,请写出第一个错误信息
  3. select * from test_sql ${sql}
  4. ${sql}

若满足以下前提条件的情况下,是否只有第二条sql才是真正意义上的sql注入?
1.配置文件的数据库连接url保证allowMutiQueries=false(即一条语句内不可以执行多条sql语句)
2.可以容忍表test_sql的全量查询

题主在满足上述前提条件的情况下对第一条sql进行注入,使其变成了如下sql
(1)select * from test_sql; truncate test_sql
(2)select * from test_sql; truncate test_sql;

执行出现如下报错:(题主爆炸注入形成的sql是正确的命令)

img

综上,若满足前提条件,是否第二条sql才是真正意义上的sql注入?

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

3条回答 默认 最新

  • |__WhoAmI__| 2023-01-11 15:46
    关注

    根据提供的信息,在配置中 allowMultiQueries 被设置为 false,所以当注入语句中包含多条 SQL 语句时,会产生异常。

    而第一条SQL语句所导致的结果是,查询操作被破坏,但是数据库没有被损坏或数据没有被更改,这不是传统意义上的 SQL 注入攻击。

    而第二条SQL语句所导致的结果是,数据库表被删除,这是一种传统意义上的 SQL 注入攻击。

    所以第二条sql才是真正意义上的SQL注入。

    需要提醒的是,即使在 allowMultiQueries 设置为 false 的情况下,使用字符串拼接的方式构建 SQL 语句仍然是不安全的,建议使用参数化的方式来防止SQL注入。

    仅供参考,望采纳,谢谢。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月19日
  • 已采纳回答 1月11日
  • 创建了问题 1月11日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么