我正在使用安全牧羊人作为一个训练工具,我现在在挑战,SQL注入逃避挑战。
挑战:
当我在MySQL中的本地数据库中进行类似于上面的查询(只是不同的表名)时,它工作得很好(我假设谢泼德在这个挑战中使用了MySQL,因为它是我迄今为止所面临的唯一类型的DBMS )。
如挑战提示中提到的,后端正在使用的查询是:
SELECT * FROM customers WHERE customerId="1" OR "1"="1";
该应用程序通过将'
设置为\'
来对任何SQL注入进行转义。它不会改变"
。
发布于 2019-07-01 15:28:20
简短的回答:滥用他们的逃避方式。试试\' OR 1=1; --
。
较长的答覆:
它们的转义函数通过将每个'
替换为\'
来工作。所有这些,包括前面已经有反斜杠的。这意味着如果他们看到\'
,最终会变成\\'
--一个转义反斜杠,后面跟着一个未转义的单引号。
之后,它是标准的SQL注入。OR 1=1
获取数据库中的每一行,;
终止该语句,而--
将其注释掉,从而忽略它们的关闭引号、语句结束、其他条件等。
发布于 2016-10-29 11:17:02
我刚刚发现,如果有人在管理配置文件,模块布局到锦标赛模式,然后出现一个新的标签欺骗。因此,上述问题的答案是:\'or"1"="1"; --
。
发布于 2017-01-31 21:43:05
这些答案是不正确的。这个问题的正确答案是:
" or ""="
原因:聪明的黑客可能只需在用户名或密码文本框中插入“或”=即可访问数据库中的用户名和密码。结果SQL是有效的。它将从表客户返回所有行,因为“=”始终为真。
https://security.stackexchange.com/questions/141291
复制相似问题