考虑一个SQL易受攻击的网站。
让查询中的列数为3.
声明如此,www.test.com?php.id=-1' union select 1,2,3 --+-
我对这句话的理解是这样的。
'
用于中断查询并输入第二个语句,--+-
用于注释掉语句的其余部分。 输入此声明后,网站会将2和3显示为易受攻击的列。
我没有得到的是select语句如何显示易受攻击的列。
答案 0 :(得分:1)
假设您的后端代码执行了类似的操作:
sql = "SELECT UserId, UserName, Password from Users where UserID = " + id + " AND password = '" + password + "'"
因此,如果用户ID和密码匹配,它只会返回结果。
然后“注入”上面的代码将导致SQL语句
SELECT UserId, UserName, Password from Users
where UserID = -1 union select 1,2,3 --+- AND password = 'anything'
据推测,用户界面可能会在“用户名”和“密码”字段中显示1
和2
,将其标识为“易受攻击”
这是一种用于确定如何在后端代码中构建SQL语句的技术,以便定义真正的SQL注入攻击以检索敏感数据。