Sql union select语句如何输出易受攻击的列

Sql union select语句如何输出易受攻击的列,sql,sql-injection,Sql,Sql Injection,考虑一个SQL易受攻击的站点 让查询中的列数为3 下面的语句是:www.test.com?php.id=-1'union select 1,2,3-+- 我对这句话的理解是这样的 有两种说法 Union用于联接这两个语句。 -用于使第一条语句的值为空。 '用于中断查询并输入第二条语句,-+-用于注释掉语句的其余部分。 输入此语句后,网站将2和3显示为易受攻击的列 我不明白的是select语句如何显示易受攻击的列。假设您的后端代码执行了如下操作: sql = "SELECT UserId, Use

考虑一个SQL易受攻击的站点

让查询中的列数为3

下面的语句是:www.test.com?php.id=-1'union select 1,2,3-+-

我对这句话的理解是这样的

有两种说法 Union用于联接这两个语句。 -用于使第一条语句的值为空。 '用于中断查询并输入第二条语句,-+-用于注释掉语句的其余部分。 输入此语句后,网站将2和3显示为易受攻击的列


我不明白的是select语句如何显示易受攻击的列。

假设您的后端代码执行了如下操作:

sql = "SELECT UserId, UserName, Password from Users where UserID = " + id + " AND password = '" + password + "'"
因此,只有当用户ID和密码匹配时,它才会返回结果

然后注入上面的代码将导致

SELECT UserId, UserName, Password from Users 
where UserID = -1 union select 1,2,3 --+- AND password = 'anything'
用户界面可能会在用户名和密码字段中显示1和2,将其标识为易受攻击

这是一种用于确定如何在后端代码中构建SQL语句的技术,以便定义真正的SQL注入攻击来检索敏感数据