乘法运算符会导致 SQL 注入吗?

May multiplication operator cause SQL injection?

提问人:Marvin 提问时间:1/16/2018 最后编辑:TarangPMarvin 更新时间:1/16/2018 访问量:220

问:

我正在使用acunetix对传入的网站执行部分安全审计。该应用程序主要使用PHP和MySql开发。

所有用户输入都被转义,但一些输入(主要是 url 参数)部分未转义:我仍然可以在字符串参数中发送“*”运算符。 Acunetix 会因此触发警报:

攻击细节

URL 编码的 POST 输入 A 设置为 417*1*1*1*1*1*1*1*

执行的测试:

648' => ERROR
648'' => ERROR
883*1*1* => ERROR
545*1*1*1*1 => OK
965*1*1*1*1* => ERROR
880*1*1*1*1*1*1 => OK
417*1*1*1*1*1*1* => ERROR

我不明白为什么它被认为是一个漏洞:目的是表明我的输入没有被充分逃脱(无论该漏洞多么实际可利用),还是这里存在真正的危险?万一有:你如何利用它?

php mysql 安全 sql 注入

评论

2赞 Yash Parekh 1/16/2018
*是一个运算符,每侧使用两个操作数来执行任何算术运算。因此,如果您在最后使用,那么它总是会给您一个错误......*
0赞 Scott Arciszewski 1/19/2018
为了让您的生活更轻松,只需使用准备好的语句即可。

答:

0赞 Philipp Maurer 1/16/2018 #1

通过提交星号运算符,测试提供程序仅检查符号的计算方式是字符串还是运算符如果它因语法错误的输入而抛出错误,则可以得出结论,它没有被转义。 如果提交了一些易受攻击的代码,那么它很可能也无法逃脱,从而损害您的基础设施。

提交星群本身被认为是无害的。无论如何,这只是一个测试,看看是否存在漏洞,提供者不想提交实际损害或破坏测试环境的值。

评论

0赞 Marvin 1/16/2018
我知道您提供的信息越少越好。我担心存在实际风险,但我理解 acunetix 警报。谢谢你的解释