如何找到sql注入漏洞?

时间:2010-09-03 13:59:26

标签: php security sql-injection

有没有办法找到SQL注入漏洞?

注意:我问如何在您控制的服务器上找到它们,以便您可以修复它们。我不是在询问如何在别人的服务器上检测它们来利用它们。

有没有办法找到mysql_query()的每一次出现而不打开每一页并执行ctrl+f

5 个答案:

答案 0 :(得分:10)

使用linux,您可以使用grep实用程序。

find /dir/containing/files -type f -name '*.php'|xargs grep --color=auto "mysql_query"
  • /dir/containing/files:包含PHP文件的目录,例如/home/user/domains/example.com/public_html
  • -type f:仅搜索文件(不是目录)
  • -name '*.php'仅匹配以.php结尾的文件。如果您想匹配其他文件,例如.inc请改用:-name '*.php' -o -name '*.inc'(匹配* .php或* .inc)
  • |xargs grep使用找到的文件内容进行搜索
  • --color=auto突出显示找到的部分
  • "mysql_query"您的搜索字词

答案 1 :(得分:6)

不,没有简单的方法。如果有的话,它不是万无一失的。

话虽如此,你应该研究this question/answer线程并应用它们。

要搜索mysql_query(),您可以使用文本编辑器的搜索文件功能。我使用 Notepad++ 并且search-in-files可以搜索目录中的mysql_query字符串以及具有特定扩展名(在您的情况下为.php)文件的子目录

带有Notepad ++屏幕截图的教程是here

答案 2 :(得分:2)

在python中创建了一个名为w3af的开源项目,除其他外,它用于查找SQL注入问题。

从页面下载,然后在启动时选择fast_scan配置文件,在Target上输入您的URL(如果您在本地运行,则可能类似http://localhost:8080)并运行应用程序。

如果它能找到任何sql注入问题,它会让你知道。

在检查所有mysql_query次来电以检查一切是否正常后,可以执行此步骤。

答案 3 :(得分:0)

到目前为止,查找SQL注入漏洞的最佳方法是使用Fuzzer,例如Acunetix($)NTOSpider($$$),Wapitit(开源,非常好),W3AF(开源,不太好。)

确保dispaly_errors =开启。这些工具通过插入'"等错误数据并查看是否显示错误来检测sql注入。他们还通过注入需要花费很长时间' sleep(30)--的查询来检测sql注入,以查看请求是否需要超过30秒。

答案 4 :(得分:-1)

如果你想搜索一下Red Gate的优秀SQL Search工具(它是免费的!),但它只适用于SQL Server。