就在最近,我们的客户端通过渗透测试公司对他们的站点进行了测试,并在报告中指出,在某些字段上,可以执行SQL注入。它们只声明DB服务器版本和找到的几个表。
我试图在该字段上执行SQL注入,但无法得到相关的结果。该字段上的SQL注入存在的问题是:
SELECT 1 FROM table WHERE column = '{$value}'
)。由于所有这些原因,我不知道如何执行SQL注入来返回一些数据.我知道我可以做一个插入、更新、删除查询,所以确实有注入,但是如何使用这个字段及其验证方法从select查询中检索一些数据呢?
嘿,伙计们!我不是在问“有任何SQL注入吗?”或者“SQL注入是一件坏事吗?”----我知道有SQL注入,我知道这是非常糟糕的,但是我的问题是,当您知道上面的条件时,如何执行注入来检索任何数据……
下面的评论是没用的..。
发布于 2012-11-15 12:20:57
一旦发现漏洞,设计一种完全控制DB的方法可能需要时间,特别是如果攻击方不得不欺骗/重写客户端代码以与易受攻击的服务器端验证兼容。这也可能不是安全任务的一部分:它的实际目标是查找漏洞,而不是利用漏洞。
因此,在这里花费资源是毫无意义的,主要是您有一个漏洞,您必须纠正它。即使安全团队无法利用它,它也不能证明什么:--一个更有经验和/或动机更强的不法分子团队--肯定可以利用它,。特别是,有一些工具一旦发现SQL注入漏洞,就会自动化利用它的过程。
不要花太多时间试图理解客户端更改的子实用程序:最重要的部分是健壮的服务器端验证。
也可以用准备好的语句,解决问题。
发布于 2012-11-15 11:50:36
很明显:
column = :value
而不是column = '{$value}'
)。因此,do存在一个SQL漏洞。这并不意味着我们一定可以盗取你的密码或信用卡号码。最小的效果是用户提供的参数会使你的应用程序崩溃,这已经够糟糕的了。
对于这种注入的确切潜力,很难说,甚至不知道应用程序做什么。通常的可能性包括:
更新:
没有看到PHP代码所做的事情:
$value = "' UNION ALL SELECT credit_card FROM billing_info -- ";
https://stackoverflow.com/questions/13396795
复制相似问题