我正在课堂上做一个练习,通过用户/密码表单查找网页漏洞,我们支持使用SQL注入修改表的列。
我知道数据库的表,例如,我试图修改具有列id、密码和电子邮件的表用户。
问题是,对于INSERT、UPDATE或DELETE,服务器代码使用executeUpdate((方法,而对于SELECT,则使用返回ResultSet的executeQuery((方法
correctpassword'; UPDATE usuarios SET id='newname' WHERE id='oldname'; --
它返回一个错误,因为UPDATE不返回ResultSet对象。
我也尝试过嵌套查询,所以主查询将是一个SELECT,所以它实际上会返回一个ResultSet对象,但它也不起作用。查询是:
correctpassword'; SELECT id FROM usuarios WHERE id = (SELECT id FROM usuarios WHERE id=?admin?; UPDATE usuarios SET id=?luciareina? WHERE id=?admin?); --
你知道怎么做吗?提前非常感谢!
根据您拥有的数据库服务器,在select语句中不能有update语句。
您应该关闭现有查询,然后进行更新此外,请确保您正在更新的列不是不可更新的自动生成/键列。
SELECT id FROM usuarios WHERE id = 1; UPDATE usuarios SET id=1 WHERE id=2
在通过网页测试之前,您应该直接在服务器上测试您的注入,看看它是否有效。