首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL注入逃避挑战安全牧羊人

问SQL注入逃避挑战安全牧羊人
EN

Security用户
提问于 2016-10-29 18:43:09
回答 4查看 13K关注 0票数 11

我正在使用安全牧羊人作为一个训练工具,我现在在挑战,SQL注入逃避挑战。

挑战:

当我在MySQL中的本地数据库中进行类似于上面的查询(只是不同的表名)时,它工作得很好(我假设谢泼德在这个挑战中使用了MySQL,因为它是我迄今为止所面临的唯一类型的DBMS )。

知道上面的查询为什么不能用作SQL注入吗?

如挑战提示中提到的,后端正在使用的查询是:

代码语言:javascript
复制
SELECT * FROM customers WHERE customerId="1" OR "1"="1";

该应用程序通过将'设置为\'来对任何SQL注入进行转义。它不会改变"。

EN

回答 4

Security用户

发布于 2019-07-01 23:28:20

简短的回答:滥用他们的逃避方式。试试\' OR 1=1; --。

较长的答覆:

它们的转义函数通过将每个'替换为\'来工作。所有这些,包括前面已经有反斜杠的。这意味着如果他们看到\',最终会变成\\' --一个转义反斜杠,后面跟着一个未转义的单引号。

之后,它是标准的SQL注入。OR 1=1获取数据库中的每一行,;终止该语句,而--将其注释掉,从而忽略它们的关闭引号、语句结束、其他条件等。

票数 1
EN

Security用户

发布于 2016-10-29 19:17:02

我刚刚发现,如果有人在管理配置文件,模块布局到锦标赛模式,然后出现一个新的标签欺骗。因此,上述问题的答案是:\'or"1"="1"; --。

票数 0
EN

Security用户

发布于 2017-02-01 05:43:05

这些答案是不正确的。这个问题的正确答案是:

代码语言:javascript
复制
" or ""="

原因:聪明的黑客可能只需在用户名或密码文本框中插入“或”=即可访问数据库中的用户名和密码。结果SQL是有效的。它将从表客户返回所有行,因为“=”始终为真。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/141291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档