首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL注入测试软件

SQL注入测试软件
EN

Stack Overflow用户
提问于 2020-05-05 16:13:54
回答 2查看 74关注 0票数 0

我们必须使用较旧版本的ERP系统(1993)。

它有多个模块。这些模块有窗口(选项卡)。标签页有cols (很明显)。

在此选项卡中,用户可以创建一个类似于子查询的“新列”->。查询只能在括号()中使用。

我只是好奇,有没有可能按用户进行注入。

例如:

代码语言:javascript
复制
 --basic query (self join)
(select i.my_col from my_table i where my_pk = i.pk)

 --illlustrating
(select replace(i.my_col, 'UPDATE...') from my_table i where my_pk = i.pk)

有没有办法让第二个查询变得可行?我的意思是,用户可以用这种方法来更新列吗?

我如何测试它?

EN

回答 2

Stack Overflow用户

发布于 2020-05-05 16:25:24

可以通过preparedStatementsetParameterwhere条件处理动态值,但不幸的是,该选项不适用于动态column选择。

可以做的最好的事情是在传递给查询之前拥有所有可能/适用的列名。

代码语言:javascript
复制
// check if my_col is possible values else throw the error.
(select replace(i.my_col, 'UPDATE...') from my_table i where my_pk = i.pk)
票数 0
EN

Stack Overflow用户

发布于 2020-05-05 18:15:00

避免SQL注入的原因在于将用户输入转换为可执行语句的机制。您发布的实际示例不会运行,但我可以想出一些方法来劫持SELECT来运行恶意DML。这取决于框架:考虑到底层软件是古老的,我怀疑它可能非常容易受到攻击。

一般来说,如果您担心SQL注入,那么您应该研究一下使用Oracle的内置DBMS_ASSERT package来验证SQL字符串。Find out more

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61608638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档