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
向您展示所有表格。您可以做同样的事情来获取表中的列列表,然后开始 运行 查询以查看各个表中的数据。
以下是教科书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
向您展示所有表格。您可以做同样的事情来获取表中的列列表,然后开始 运行 查询以查看各个表中的数据。