简介-sqlmap简介-sqlmap用户手册-测试-IT技术博客

检测和利用SQL注入

假设您正在审核Web应用程序,并找到了一个网页,该网页通过GETPOSTCookie参数或HTTP User-Agent请求标头接受用户提供的动态值。 现在,您要测试这些漏洞是否受SQL注入漏洞的影响,如果受此漏洞影响,则可以利用它们从后端数据库管理系统中检索尽可能多的信息,甚至可以访问基础文件系统和操作系统。 


在一个简单的世界中,请考虑目标网址为:

http://192.168.136.131/sqlmap/mysql/get_int.php?id=1

假设:

http://192.168.136.131/sqlmap/mysql/get_int.php?id=1+AND+1=1

与原始页面在同一页面上(条件评估为True):

http://192.168.136.131/sqlmap/mysql/get_int.php?id=1+AND+1=2

与原始版本不同(条件评估为False)。这可能意味着您在index.php页面的id GET参数中处于SQL注入漏洞的前面。此外,在将SQL语句发送到后端数据库管理系统之前,不会对用户提供的输入进行任何检查。


这是动态内容Web应用程序中的一个常见缺陷,它不依赖于后端数据库管理系统也不依赖于Web应用程序编程语言。这是应用程序代码中的缺陷。开放Web应用程序安全项目在2013年的十大列表中将此类漏洞评为最常见和最严重的Web应用程序漏洞。


现在,您已经找到了易受攻击的参数,可以通过处理HTTP请求中的id参数值来利用它。


回到场景,我们可以对SQL SELECT语句的可能语法进行有根据的猜测,其中在get_int.php网页中使用了用户提供的值。在伪PHP代码中:

$query = "SELECT [column name(s)] FROM [table name] WHERE id=" . $_REQUEST['id'];

如您所见,在id参数的值(例如id = 1 AND 1 = 1)之后附加语法有效的SQL语句,该语句的计算结果为True,这将导致Web应用程序返回与原始请求(未添加SQL语句)。这是因为后端数据库管理系统已经评估了注入的SQL语句。前面的示例描述了一个简单的基于布尔的盲SQL注入漏洞。但是,sqlmap能够检测到任何类型的SQL注入缺陷并相应地调整其工作流程。


在这种简单情况下,不仅可以附加一个或多个有效SQL条件,而且还可以附加(取决于DBMS)附加的SQL查询。例如:[...]&id = 1;另一个SQL查询#


sqlmap可以自动执行识别和利用这种类型的漏洞的过程。将原始地址http://192.168.136.131/sqlmap/mysql/get_int.php?id=1传递到sqlmap,该工具将自动:


  • 识别易受攻击的参数(此示例中的id)

  • 确定可以使用哪些SQL注入技术来利用易受攻击的参数

  • 指纹识别后端数据库管理系统

  • 根据用户的选择,它将广泛指纹识别,枚举数据或接管整个数据库服务器

...并且根据提供的选项,它将枚举数据或完全接管数据库服务器。


Web上存在许多资源,详细介绍了如何检测,利用和防止Web应用程序中的SQL注入漏洞。建议您先阅读它们,然后再使用sqlmap。



直接连接到数据库管理系统

直到sqlmap版本0.8为止,该工具还是另一个SQL注入工具,Web应用程序渗透测试人员/新手/好奇的青少年/计算机上瘾的人/朋克等等使用此工具。事情在不断发展,随着它们的发展,我们也是如此。现在,它支持此新开关-d,它允许您从计算机连接到数据库管理系统守护程序正在侦听的数据库服务器的TCP端口,并执行在使用它通过SQL攻击数据库时执行的所有操作。注入漏洞。


标签: sqlmap简介sqlmap教程教程sqlmap