You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何OWASP Juice Shop与Mutillidae II的SQL注入Payload互不兼容?

两款OWASP靶场SQL注入差异解析

OWASP Juice Shop

原始SQL查询语句

SELECT * FROM Users WHERE email = '' AND password = '' AND deletedAt IS NULL

生效Payload

' OR 1=1;--

OWASP Mutillidae II

原始SQL查询语句

SELECT * FROM accounts WHERE username='' AND password='' 

生效Payload

' OR 1=1 --


差异原因解析

1. 数据库对注入语法的支持差异

  • Juice Shop默认使用SQLite数据库,允许多语句注入(通过;终止当前语句),且对注释符--的格式要求宽松(无需强制空格分隔)。Payload中的;用于直接终止原WHERE子句的逻辑,--则注释掉后续所有冗余内容,确保OR 1=1的恒真条件直接生效。
  • Mutillidae II默认使用MySQL数据库,默认关闭多语句注入支持,;会被判定为语法错误。因此其Payload仅使用 --(空格+双破折号)注释后续内容,符合MySQL对单行注释的格式要求(必须用空格分隔--与后续内容)。

2. SQL语句结构与验证逻辑差异

  • Juice Shop的SQL末尾带有AND deletedAt IS NULL额外条件,注入邮箱字段后,;--直接终止原语句并注释所有后续条件,此时无论密码字段输入什么内容,查询都会返回所有未被标记删除的用户,满足登录验证的“存在匹配用户即可通过”逻辑。
  • Mutillidae II的SQL仅包含username和password两个关联条件,且后台验证逻辑对两个字段的输入拼接校验更严格:仅在单个字段注入时,未注入字段的输入会导致拼接后的SQL出现语法错误(如未被正确注释的闭合单引号),或验证逻辑判定条件不匹配;只有两个字段都注入相同Payload,才能让整个WHERE子句变为恒真条件,成功返回结果。

内容的提问来源于stack exchange,提问作者Blaack Work

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:58:33