DVWA-master新手指南之SQL Injection(二)
一、前言
时隔快一个月的第二部DVWA-master新手指南,今天我们来到SQL Injection
SQL Injection:SQL注入,有趣的攻击技术,让人入迷。
因为在《SQL注入思路分析(入门必看)》和《SQL布尔型盲注思路分析(入门必看)》这两篇文章中已经对手工注入有了详细的讲解,因此在这里讲解如何使用自动化SQL注入工具Sqlmap进行SQL注入
二、正文
LOW级别
step1 测试注入点
首先我们一般都会使用
sqlmap.py -u "………………"的指令来进行尝试
结果却发现了报错,表示没有可注入点。我们来找一下不出结果的原因
首先,我们可以确认low级别的必定存在注入点。因此我们排除网站没有注入点这个原因
那么会不会是因为某些参数没有设置好呢?
使用burpsutie抓包发现
在提交申请的时候,需要cookie,因此我们尝试在扫描前加入--cookie参数
这次的注入我们带上了cookie参数
下面看看结果
不出意料,显示出相应的注入结果
step2 爆当前使用数据库名
首先我们可以使用--dbs参数查看所有数据库名
但是这样我们是不清楚当前的数据库的,因此使用--current-db选项
如图,我们得到了当前数据库名dvwa
step3 爆表名
首先使用-D dvwa限定查询的数据库为dvwa ,之后增加--tables爆表名
显示出两个表,一个users,一个guestbook
猜测我们想要的在users中
step4 爆列名
嗯,爆出了列名,我们需要user_id(可不需),user,password
step5 爆字段
大功告成
关于命令的查询,可以到我另一篇文章《SQLMAP帮助文档全解析》进行学习~
Middle级别
到了middle级别后我们可以明显的发现,web应用不再使用GET方式进行请求,而是POST,因此我们需要使用--data参数来对post的表单来进行处理
step1 测试注入点
可以看到我们的测试成功
接下来的爆数据库名爆表名爆列名爆数据都跟上面一致,举一反三即可
High级别
进入High级别后,我们可以看到,用户的输入是通过一个新的窗口进行的,即注入点输入的数据在查看返回结果时并不在同一个页面上,因而我们如果进行常规的SQLmap注入是无法得到正确的结果的。同时依然是post请求
因此在这个级别的测试中,我们要选用sqlmap的二阶SQL注入选项--second-order
step1 测试注入点
sqlmap.py -u "……" --cookie="……" --data="id=1" --second-order="……" --batch
这里为了省事,使用了--batch选项
测试成功
step2 爆当前数据库名
爆出数据库名 dvwa
接下来的爆表名爆列名爆数据都跟上面一致,举一反三即可
总结
在使用SQLmap的过程中,第一步对目标注入点的测试是最关键的