Sql注入之sqlmap+dvwa实例演练
相信很多同学都已经知道了什么是sql注入,也明白为什么会发生sql注入。也可以通过在输入框和url中“手工”注入,来实现绕过登录、非法修改这样有趣又实用的功能。但这些还远不能让我们感觉到sql注入的巨大威力。
你也一定听过各种各样的新闻报道xxx网站被黑,上百万用户数据泄露。想知道它们是如何获得这些数据的吗?不讲过多原理,就和实验楼的【Sql注入之sqlmap+dvwa实例演练】项目教程一起来实操“拖库”。
sqlmap是当前最火热的自动化SQL注入工具,可以扫描、发现并利用给定URL的SQL注入漏洞。而DVWA是一套包含了一些常见安全漏洞的靶机web应用。矛和盾都在手,一起通过该项目的实际演练来感受sql注入的实际威力吧。
一、sql注入原理
注入式攻击可行的根本原因在于数据与程序/指令的混合。在sql注入中,精心构造的输入数据将“溢出”原本它的数据域范围,成为sql语句控制域的一部分,进而改变和控制sql语句的行为。
利用sql注入漏洞的步骤可分为:
- 找注入点(在哪里注入)
- 构造注入内容(如何注入)
注入点:
根据注入的原理,可判断出有与服务器数据交互的地方都有可被注入的可能。Web应用的用户输入方式比较多,其中一些用户输入方式是很明显的,如HTML表单。但还有许多不明显的交互方式例如隐藏的HTML表单输入、HTTP头部、cookies、甚至异步的AJAX数据交互请求。常见的注入点有GET请求(url参数)和POST请求(表单数据)。我们可以通过burp suite这类代理、抓包工具来全面分析可注入点。
注入类型:
注入字符串构造方式或者说注入类型有5种,分别是:
- 布尔型注入
- 报错型注入
- 基于时间延迟注入
- 可联合查询注入
- 可多语句查询注入
这5种方式基本涵盖了绝大多数的注入攻击实例,掌握了这5种方式可以说能够很好的查找和利用sql注入了。
其中前3种一般用来获取DBMS的相关信息和sql注入检测;后两种用来大量获取数据库中的数据。
sqlmap在检测和注入时自动使用到了以上几种构造方式。
二、sqlmap的安装和使用
什么是SQLmap?
SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。
ubuntu的软件源中不包含sqlmap,去github下载源码速度较慢,我们使用kali的源来下载和安装以节省时间。
$ wget http://labfile.oss.aliyuncs.com/courses/645/kali_aliyun_source.txt
$ sudo cat /etc/apt/sources.list >> kali_aliyun_source.txt
$ sudo cp kali_aliyun_source.txt /etc/apt/sources.list
$ sudo apt-get update
$ sudo apt-get install sqlmap
安装过程可能出现无法验证软件包的错误提示,不会影响后续实验,可以忽略跳过。安装完毕后,在终端中输入sqlmap -u '.'
测试下是否能正常使用:
看到黄色的Banner说明安装成功。
三、dvwa的部署和使用
DVWA是什么?
DVWA(Dam Vulnerable Web Application)是用PHP+Mysql 编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含SQL注入、XSS、盲注等常见的一些安全漏洞。
实验楼的这个项目课程已经从dvwa官网下载并添加了简单的部署脚本,按照以下步骤部署dvwa到实验楼环境中:
$ wget http://labfile.oss.aliyuncs.com/courses/645/dvwa_deploy.tar.gz
$ tar -zxvf dvwa_deploy.tar.gz
$ ./deploy.sh
接着打开浏览器,在地址栏输入localhost/dvwa/setup.php
访问初始设定页面,点击图中的按钮初始化数据库。
初始化成功后的结果如下:
数据库初始化成功初始化之后,页面将跳转到登录页,输入默认用户名admin和密码password登入系统。
登入dvwa下一步需要设置dvwa系统的难度级别,由于它是一个专门的演练系统,因此针对不同的使用场景设计了4种攻击难度级别。
登入系统后,点击DVWA Security
选项即可看到设置页面。将难度设置为low之后,点击submit让设置生效。有兴趣的同学也可以设置中高难度来学习和练习一些passby技巧。
四、开始注入
这一步是动手实战开始注入,主要分为以下两个步骤:
- 注入点扫描;
- 注入点利用;
关于具体的操作方法和详细代码,点击这里就可以查看了~