SQL注入修改表

Posted

技术标签:

【中文标题】SQL注入修改表【英文标题】:SQL Injection modify table 【发布时间】:2021-12-19 05:41:37 【问题描述】:

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

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

问题在于,对于 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?); --

你知道怎么做吗?非常感谢您!

【问题讨论】:

【参考方案1】:

根据您拥有的数据库服务器,您不能在 select 语句中包含更新语句。

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

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

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

【讨论】:

以上是关于SQL注入修改表的主要内容,如果未能解决你的问题,请参考以下文章

XCTF-攻防世界CTF平台-Web类——14supersqli(SQL注入关键词过滤)

[DLL注入的方法]静态修改PE输入表法

[DLL注入的方法]进程创建期修改PE输入表法

问一下asp 的 sql注入怎么办

下列哪些选项属于SQL注入的危害?

Dll注入:修改PE文件 IAT注入