sql 注射会对您造成什么伤害

what sql injection can do to harm you

以下是教科书sql注入示例:

SELECT id FROM table WHERE username = '$username' AND password = '$password'

如果您的站点无法防止 sql 注入,您只需发送 password = anything' OR 'x'='x 作为输入并无需密码即可登录。简单。

攻击者还可以传入 '; DROP TABLE table; 以从数据库中删除 table。当然,如果 sql 连接确实具有 DROP 权限,那么它将无法工作。此外,攻击者可能希望通过做一些事情而不是简单地丢弃你的 table 来获得更多好处。

所以问题是攻击者能否进行攻击以在 table 上执行 UPDATE,获取所有 table 上的结构,列出 table 或数据库只攻击这个漏洞?

p.s:并不是说我想用它来攻击人,但我有点好奇我的数据库在最坏的情况下会发生什么......

可能,当然。如果您可以将 DROP TABLE table; 注入到执行的 SQL 语句中,那么您也可以轻松地注入一个 UPDATE 语句来修改您想要的任何表的任何行。您还可以经常添加或修改 SELECT 语句以显示您感兴趣的信息。例如,如果您有类似

的查询
select name
  from people
 where person_id = '$person'

你可以注入类似

的东西
anything` union all select table_name from information_schema.tables

生成类似

的语句
select name
  from people
 where person_id = 'anything'
union all
select table_name
  from information_schema.tables

向您展示所有表格。您可以做同样的事情来获取表中的列列表,然后开始 运行 查询以查看各个表中的数据。