【发布时间】:2015-04-22 05:09:11
【问题描述】:
我很难理解this website on Rails SQL Injections 的这一部分是如何工作的。
在 ORDER BY 子句中利用 SQL 注入很棘手,但可以使用 CASE 语句测试其他字段,将排序列切换为真或假。虽然它可能需要多次查询,但攻击者可以确定该字段的值。
谁能解释一下?他们说“将排序列切换为真或假”这一点很难理解,因为我不明白这将如何使攻击者能够揭示另一个字段的值。
【问题讨论】:
-
switching the sort column for true or false,意味着假设您正在调用像User.order(condition)这样的用户模型,条件是您可以说CASE password WHEN 's' THEN 0 else 1 END,在这里您正在检查真假。您的密码案例将失败,但其他部分将返回true并且条件将通过并获取记录。大多数情况下,密码被保存为password字段,然后这将返回带有密码的用户对象数组。
标签: sql ruby-on-rails sql-injection