识别SQL注入漏洞
利用SQL注入的第一步是识别漏洞。
本实验的第一部分将引导您了解如何识别Web应用程序中的SQL注入漏洞。
在Kali Linux中打开以下URL。
http://192.168.56.101/webapps/sqli/sqli.php
它显示以下网页。
用户可以通过在文本框中输入ID值来查看数据库中的产品。
在输入一个ID后,我们会给出输入的ID,产品名称以及已经在数据库中注册的价格的详细信息。
它会看起来像这个截图。
如果在数据库中找不到该ID,则会显示消息“0结果”。
如果我们在输入id值1时观察URL,则将值1发送给参数名称为“id”的数据库,如下所示。
http://192.168.56.101/webapps/sqli/sqli.php?id=1
如果我们将这个参数值更改为2,我们应该看到不同的输出。
http://192.168.56.101/webapps/sqli/sqli.php?id=2
现在,我们的目标是查看此参数是否存在任何SQL注入漏洞。
作为攻击者,我们可以通过在参数值的末尾添加单引号来修改发送给服务器的请求,并观察响应
http://192.168.56.101/webapps/sqli/sqli.php?id=1'
大多数开发人员会提供详细的错误消息,如下所示。在这种情况下,很容易确认参数是脆弱的。
你的SQL语法有错误,检查对应于您的MySQL服务器版本的手册,在第1行的“1”附近使用正确的语法
在我们的例子中,没有显示详细的错误信息。你可以在下图看到这个。
即使错误得到妥善处理,我们也不会放弃。让我们看看是否可以找到另一种方法来确认漏洞。
让我们注入以下有效载荷:1 or 1 = 1
很好,它的工作。即使我们没有在任何地方指定id 2来给出与之相关的结果,但由于我们作为输入传递的有效载荷,我们得到了表中的所有记录。
我们可以提供一个错误的条件并确认漏洞。
有效载荷:1 or 1 = 2
显然,1 = 2返回false,因此应用程序只返回id = 1的行。
如果我们的类比是正确的,0 or 1 = 1应该返回所有行,因为1 = 1返回true。
ok,它确认参数id易受SQL注入的影响。
SQLMAP的胜利
我们已经看到了如何识别应用程序是否容易受到SQL注入攻击。
在本节中,我们将讨论如何使用名为SQLmap的工具来利用SQL注入。
什么是SQLmap?
它是一个开源工具,用于在Web应用程序中自动执行检测和利用SQL注入漏洞的任务。
SQLmap使用各种技术来检测和利用Web应用程序中的SQL注入漏洞。它包括联合查询,基于错误的注入,基于布尔的盲SQL注入,基于时间的盲注入,堆栈查询和带外。
它支持许多不同的数据库,包括MySQL,MSSQL,Microsoft Access,SQLite,IBM db2,PostgreSQL,Oracle和Sybase。
SQLmap预装了Kali Linux。
现在,我们将使用SQLmap来利用下面的URL。
http://192.168.56.101/webapps/sqli/sqli.php?id=1
找出数据库名称:
在这一步中,我们将使用SQLmap来查找易受攻击的参数,然后提取所有的数据库名称。
让我们使用下面的命令。
sqlmap -u“http://192.168.56.101/webapps/sqli/sqli.php?id=1”-dbs
上面的命令检查URL中的任何参数是否容易受到SQL注入的影响。
如上图所示,SQLmap表示应用程序正在使用MySQL数据库,并询问我们是否要跳过其他数据库的有效载荷。我们可以输入Y来表示YES 。
找到至少一个易受攻击的参数后,SQLmap会提示用户检查是否要继续查找其他易受攻击的参数,如下图所示。
如果我们的工作是只在一个参数中找到漏洞,然后利用它,我们可以简单地输入NO并继续进行。
如下图所示,我们从应用程序中获得了5个数据库。
找出表名:
我们对数据库“infosec”感兴趣。
所以,我们将从这个数据库中提取所有的表名。
让我们使用下面的命令
sqlmap -u“http://192.168.56.101/webapps/sqli/sqli.php?id=1”-D infosec -tables
本文由站长原创或收集,不代表本站立场,如若转载,请注明出处:http://yesck.com/post/php-lab-exploiting-sql-injection/
本文 暂无 评论