(10.2)--14:第十章WEB渗透实战基础-2.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《(10.2)--14:第十章WEB渗透实战基础-2.pdf》由会员分享,可在线阅读,更多相关《(10.2)--14:第十章WEB渗透实战基础-2.pdf(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第十章WEB渗透实战基础知识点一:SQL注入漏洞知识点二:SQLMAP知识点三:SQL盲注知识点四:SQL注入的防御措施知识点一:SQL注入漏洞SQL是用于访问和处理数据库的标准的计算机语言。SQL是二十世纪七十年代由IBM创建的,于1992年作为国际标准纳入ANSI。数据定义语言(DDL)数据操作语言(DML)SQL由两部分组成DDL用于定义数据库结构SQL语法DML用于对数据库进行查询或更新DDL的主要指令有CREATE DATABASE 创建新数据库ALTER DATABASE 修改数据库CREATE TABLE 创建新表ALTER TABLE 变更(改变)数据库表DROP TABLE
2、删除表DML的主要指令有SELECT从数据库表中获取数据UPDATE更新数据库表中的数据DELETE从数据库表中删除数据INSERT INTO 向数据库表中插入数据SELECT column-names FROM table-name;select-statement UNION select-statement;EXEC sql-command-namearguments to command几个关键的SQL命令需要使用一些特殊的字符来构建SQL语句 字符串指示器(string);语句终结符|对于Oracle、PostgreSQL而言为连接(合并)-注释(单行)#注释(单行)/*/注释(多行
3、)SQL注入是一种将SQL代码插入或添加到应用(用户)的输入参数中的攻击,之后再将这些参数传递给后台SQL服务器加以解析并执行。注入原理Web浏览器或呈现引擎表示层如C#、ASP、.NET、PHP、JSP等编程语言逻辑层如Microsoft SQL Server、MySQL、Oracle等数据库存储层数据库驱动的Web应用通常包含三层Web浏览器(表示层)向中间层(Web服务器)发送请求,中间层通过查询、更新数据库(存储层)来响应该请求。当用户通过Web表单提交数据时,如果输入框的值没有经过有效性检查,则这些数据将会作为SQL查询的一部分。例如如果一个网页的表单通过如下代码实现核心代码如下 当
4、用户通过浏览器向表单提交了用户名“bob”,密码“abc123”时,那么下面的HTTP查询将被发送给Web服务器:http:/ table WHERE user=bob and password=abc123http:/ table WHERE user=bob-and password=abc123但是,如果用户发送的请求的user是修改过的SQL查询,那么这个模式就可能会导致SQL注入安全漏洞。例如,如果用户将user的内容以“bob-”来提交,则单引号用于截断前面的字符串,注释符-后面的内容将会被注释掉,如下所示:Web应用程序会构建并发送下面这条SQL查询:这样,注释符-后面的内容将会
5、被完全注释掉,也就是说,对于伪造bob的用户,并不需求提供正确的密码,就可以查询到bob的相关信息。如果要对一个网站进行SQL注入攻击,首先需要找到存在SQL注入漏洞的地方,也就是注入点。可能的SQL注入点一般存在于登录页面、查找页面或添加页面等用户可以查找或修改数据的地方。寻找注入点通 常 我 们 关 注 ASP,JSP,CGI 或 PHP 的 网 页,尤 其 是 URL 中 携 带 参 数 的,例 如:http:/xxx/xxx.asp?id=numorstring。其中,参数可以是整数类型的也可以是字符串类型的。GET型的请求最容易被注入我们以数字类型为例,进行以下的讲解。如果下面两个方
6、法能成功,说明存在SQL注入漏洞,也就是他们对输入信息并没有做有效的筛查和处理。一段有问题的代码?php$con=mysql_connect(localhost,root,lenovo);if(!$con)die(mysql_error();mysql_select_db(products,$con);$sql=select*from category where id=$_GETid;echo$sql.;$result=mysql_query($sql,$con);while($row=mysql_fetch_array($result,MYSQL_NUM)echo$row0.$row1.$
7、row2.;mysql_free_result($result);mysql_close($con);?“单引号”法在URL参数后添加一个单引号,若存在注入点则通常会返回一个错误,例如,下列错误通常表明存在MySQL注入漏洞:You have an error in your SQL syntax;check the manual that corresponds to your MySQL server version for the right syntax to use near at line 1如果攻击者使用单引号注入http:/localhost/test.php?id=1,那么最
8、终的语句将变为:select*from category where id=1这将导致SQL语句执行失败且mysql_query函数不会返回任何值,后面如果有mysql_fetch_array将返回给用户一条警告信息。“永真永假”法“单引号”法很直接,也很简单,但是对SQL注入有一定了解的程序员在编写程序时,都会将单引号过滤掉。如果再使用单引号测试,就无法检测到注入点了。这时,就可以使用经典的“永真永假”法。当与上一个永真式使逻辑不受影响时,页面应当与原页面相同。例如,http:/localhost/test.php?id=1 and 1=1,传递给后台数据库服务器的SQL语句则变为:sele
9、ct*from category where id=1 and 1=1,并不影响原逻辑;而与上一个永假式时,则会影响原逻辑,页面可能出错或跳转(这与设计者的设计有关)。例如,http:/localhost/test.php?id=1 and 1=2,传递给后台数据库服务器的SQL语句则变为:select*from category where id=1 and 1=2。单引号法测试注入点的原理是验证程序是否对输入进行了验证检查SQL语法是否正确验证HTTP的请求方式是否为GET验证SQL逻辑是否正确ABCD提交单选题1分知识点二:SQLMAPSQLMap3Sqlmap是一款开源的命令行自动化S
10、QL注入工具,用Python开发而成,kali中系统已装有sqlmap;而如果在windows下使用,则需要安装Python环境。下面介绍Sqlmap最为常用的命令:Sqlmap最为常用的命令:Sqlmap-u url找到注入点或者 sqlmap-u url-current-db显示当前数据库sqlmap-u url users列出数据库用户sqlmap-u url-dbs 列出数据库或者sqlmap-u url-current-user当前数据库用户SQLMap3Sqlmap是一款开源的命令行自动化SQL注入工具,用Python开发而成,kali中系统已装有sqlmap;而如果在window
11、s下使用,则需要安装Python环境。下面介绍Sqlmap最为常用的命令:Sqlmap最为常用的命令:sqlmap-u url-tables-D “testdb”列出testdb数据库的表sqlmap-u url-columns-T user-D testdb 列出testdb数据库user表的列sqlmap-u url-dump-C“id,username,password”-T“user”-D“testdb”列出testdb数据 库user表的id,username,password这几列的数据具体实践4开放式Web应用程序安全项目(Open Web Application Securit
12、y Project,OWASP)是世界上最知名的Web安全与数据库安全研究组织,该组织分别在2007年、2010年和2013年统计过十大Web安全漏洞。我们基于OWASP发布的开源虚拟镜像“OWASP Broken Web Applications VM”来演示如何寻找SQL注入漏洞。首先,在虚拟机加载该虚拟映像。启动该虚拟机后将显示其IP地址,在本机浏览器打开该地址即可访问,如下图所示,我们选择Damn Vulnerable Web Application,通过用户名user密码user登录,选择SQLInjection。同时,将网页左下端的DVWASecurity设置为low。接下来判断是
13、否能够进行注入,通过“单引号”法进行测试,在提交栏里输入一个单引号,发现报错,错误信息为:You have an error in your SQL syntax;check the manual that corresponds toyour MySQL server version for the right syntax to use near at line 1,初步认定可以注入。接下来,我们通过Sqlmap进行自动化注入。意味着,要能访问sqli页面,需要通过login.php优先登录,登录后才可以访问。因此,需要获取登录权限才可以。但假定我们难以猜测得到用户口令和密码,但我们可以想
14、办法获取其cookie值,实现会话劫持。打开本地代理服务器Paros:设置代理:在网页的输入框中,输入123,选择提交后,查看Paros拦截到的数据包信息。http:/192.168.32.134/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit记录其url和cookie信息判定注入列举数据库列举表列举列列举数据sqlmap-u url-tables-D “testdb”语句的作用是检查url是否存在SQL注入点通过SQL注入列举所有的数据库通过SQL注入列举数据库testdb的所有表通过SQL注入列举所有数据库和所有表ABCD提交单选题1分知识点三:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10.2 14 第十 WEB 渗透 实战 基础
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内