Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
kali-linux-web-pentest-cookbook-zh
提交
52f744d7
K
kali-linux-web-pentest-cookbook-zh
项目概览
OpenDocCN
/
kali-linux-web-pentest-cookbook-zh
通知
4
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kali-linux-web-pentest-cookbook-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
52f744d7
编写于
10月 17, 2016
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6.8
上级
31cbef8d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
95 addition
and
0 deletion
+95
-0
ch6.md
ch6.md
+95
-0
未找到文件。
ch6.md
浏览文件 @
52f744d7
...
...
@@ -609,3 +609,98 @@ UNION 查询语句用于连接两个拥有相同列数量的查询,通过注
一旦我们知道了数据库和表的名称,我们在这个表中查询所有列,来了解我们需要查找哪一列,它的结果是
`user`
和
`password`
。
最后,我们注入查询来请求
`dvwa`
数据库的
`users`
表中的所有用户名和密码。
## 6.8 使用 SQLMap 发现和利用 SQL 注入
我们已经在上一个秘籍汇总看到,利用 SQL 注入是个繁琐的步骤。SQLMap Hige命令行工具,包含在 Kali 中,可以帮我们自动化检测和利用 SQL 注入。它带有多种技巧,并支持多种数据库。
这个秘籍中,我们会使用 SQLMap 来检测和利用 SQL 注入漏洞,并用它获得应用的用户名和密码。
### 操作步骤
1.
访问
` http://192.168.56.102/mutillidae`
。
2.
在 Mutillidae 的菜单中,访问
`OWASP Top 10 | A1 – SQL Injection | SQLi Extract Data | User Info`
。
3.
尝试任何用户名和密码,例如
`user`
和
`password`
之后点击
`View Account Details`
。
4.
登录会失败,但是我们对 URL 更感兴趣。访问地址栏并将完整的 URL 复制到剪贴板。
5.
现在,打开终端窗口,输入下列命令:
```
sqlmap -u "http://192.168.56.102/mutillidae/index.php?page=userinfo.php&username=user&password=password&user-info-php-submitbutton=View+Account+Details" -p username --current-user --currentdb
```
你可以注意到,`-u`参数就是所复制的 URL 的值。`-p`告诉 SQLMap 我们打算在用户名参数中查找注入。一旦漏洞被利用,我们想让它获得当前数据库用户名和数据库的名称。我们只打算获得这两个值,因为我们只想判断这个 URL 的`username`参数是否存在 SQL 注入。
![](img/6-8-1.jpg)
6.
一旦 SQLMap 检测到应用所使用的 DBMS,它会询问我们是否跳过检测其它 DBMS 的步骤,以及是否打算包含所有特定系统的测试。即使它们在当前的配置等级和风险之外。这里,我们回答
`Ues`
来跳过其它系统,以及
`No`
来包含所有测试。
7.
一旦我们指定的参数中发现了漏洞,SQLMap 会询问我们是否打算测试其它参数,我们回答
`No`
,之后观察结果:
![](img/6-8-2.jpg)
8.
如果我们打开获得用户名和密码,类似于我们在上一个秘籍那样,我们需要知道含有这些信息的表名称。在终端中执行下列代码:
```
sqlmap -u "http://192.168.56.102/mutillidae/index.php?page=userinfo.php&username=test&password=test&user-info-php-submitbutton=View+Account+Details" -p username -D nowasp --tables
```
![](img/6-8-3.jpg)
SQLMap 会保存所执行的注入日志,所以第二次攻击会花费更少的时间。你可以看到,我们指定了要提取信息(nowasp)的数据库,并告诉 SQLMap 我们想获取这个数据库的表名称列表。
9.
`accounts`
表使含有我们想要的信息的表之一。让我们转储内容:
```
sqlmap -u "http://192.168.56.102/mutillidae/index.php?page=userinfo.php&username=test&password=test&user-info-php-submitbutton=View+Account+Details" -p username -D nowasp -T accounts --dump
```
![](img/6-8-4.jpg)
我们现在拥有完整的用户表,并且我们可以看到,这里密码并没有加密,所以我们可以直接使用它们。
### 工作原理
SQLMap 会使用 SQL 注入字符串,对给定 URL 和数据的输入进行模糊测试,或者只针对
`-p`
选项中的特定目标,并且解释其响应来发现是否存在漏洞。不要模糊测试所有输入,最好使用 SQLMap 来利用我们已知存在的注入,并始终尝试缩小搜索过程,通过提供所有可用的信息,例如漏洞参数、DBMS 类型,以及其它。在所有可能性下寻找注入会花费大量时间,并在网络中产生非常大的流量。
这个秘籍中,我们已经知道了用户名参数存在注入漏洞(因为我们使用了 Mutillidae 的注入测试页面)。在第一个攻击中,我们只希望确人注入存在,并询问一些非常基本的信息:用户名(
`--curent-user`
)和数据库名称(
`--current-db`
)。
在第二个攻击中,我们使用
`-D`
选项,以及前一次攻击者获得的名称指定希望查询的数据库,我们也使用
`--tables`
询问了所包含的表名称列表。
知道我们希望获得哪个表(
`-T accounts`
)之后,我们告诉 SQLMap 使用
`--dump`
转储它的内容。
### 更多
SQLMap 也能够注入 POST 参数中的输入变量。我们只需要添加
`--data`
选项并附带 POST 数据,例如:
```
--data "username=test&password=test"
```
有时候,我们需要在一些应用中获得验证,以便能够访问应用的漏洞 URL。如果是这样,我么可以传递有效的会话 COokie给 SQLMap, 使用
`--cookie`
选项:
```
--cookie "PHPSESSID=ckleiuvrv60fs012hlj72eeh37"
```
这在测试Cookie值的注入时也非常有用。
另一个有趣的特性是,使用
` --sql-shell`
选项,它可以为我们提供 SQL shell,其中我们可以执行 SQL 查询,就像我们直接连接到数据库那样。或更有趣的是,我们可以使用
` --osshell`
在数据库服务器中执行系统命令(在注入 MSSQL 服务器时这特别有用)。
为了了解 SQLMap 拥有的所有选项和特性,你可以执行:
```
sqlmap --help
```
### 另见
Kali 包含了其它用于检测和利用 SQL 注入漏洞的工具,它们能够用于代替或配合 SQLMap:
+
sqlninja:非常流行的工具,为利用 MSSQL 服务器而设计
+
Bbqsql:Python 编写的 SQL 盲注狂阿基
+
jsql:基于 Java 的工具,带有完全自动化的 GUI我们只需要输入 URL 并按下按钮。
+
Metasploit:它包含不同 DBMS 的多种 SQL 注入模块。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录