SQL注入修改表

SQL Injection modify table

提问人:lcrnlpz 提问时间:11/5/2021 更新时间:11/8/2021 访问量:655

问:

我正在课堂上做一个练习,通过用户/密码表单查找网页漏洞,并且我们支持能够使用 SQL 注入修改表的列。

我知道数据库的表,例如,我正在尝试修改具有列 ID、密码和电子邮件的表用户。

问题是,对于 INSERT、UPDATE 或 DELETE,服务器代码使用 executeUpdate() 方法,对于 SELECT,使用 executeQuery() 方法返回 ResultSet,所以当我尝试类似的东西时,非常明显:

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?); --

你知道这样做吗?提前非常感谢!

java sql sqlite 安全性 sql 注入

评论


答:

0赞 ullfindsmit 11/8/2021 #1

根据您拥有的数据库服务器,select 语句中不能有 update 语句。

应关闭现有查询,然后执行更新 此外,请确保要更新的列不是不可更新的自动生成/键列。

SELECT id FROM usuarios WHERE id = 1; UPDATE usuarios SET id=1 WHERE id=2

在通过网页测试之前,您应该直接在服务器上测试您的注入,看看它是否有效。