以下是教科书sql注入示例:
SELECT id FROM table WHERE username = '$username' AND password = '$password'
如果您的网站无法防止sql注入,您只需输入密码= anything' OR 'x'='x
作为输入并在没有密码的情况下登录。简单。
攻击者也可以传入'; DROP TABLE table;
以从数据库中删除表。当然,如果sql连接具有DROP
权限,那么它将无效。此外,攻击者可能希望通过做一些其他事情而不仅仅是丢弃你的桌子来获得更多好处。
所以问题是攻击者是否可以在桌面上执行UPDATE
攻击,只通过攻击此漏洞获取所有表,列表或数据库的结构?
p.s:不是说我想用它来攻击别人,但我有点好奇在我的数据库中最坏的情况会发生什么......
答案 0 :(得分:1)
可能,当然。如果您可以将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
向您展示所有表格。您可以执行相同的操作来获取表中的列列表,然后开始运行查询以查看各个表中的数据。