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日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改