日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文件包含漏洞——DVWA练习

發布時間:2024/9/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文件包含漏洞——DVWA练习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:在學習文件上傳時,制作的圖片馬需要我們手動去解析,而解析的方法就算用到了文件包含漏洞,所以這次就來學習一下文件包含漏洞。

文件包含漏洞簡介

(一)文件包含可以分為本地文件包含遠程文件包含兩種。文件包含和文件上傳一樣本身并不是漏洞,而是攻擊者利用了包含的特性加上了應用本身對文件控制不嚴格,對include進來的文件不可控,才導致了一系列危害。
(二)本地文件包含就是通過URL將服務器本地的其他文件include進來。遠程文件包含就是將遠程服務器的文件include進來。
(三)最主要的是,包含進來的文件都以當前腳本文件解析,例如,當前測試系統是Apache加php環境,那么被include進來的文件,不管是什么類型,例如圖片,文本文檔等,這些文件被包含以后,都會被當做php腳本來解析。

本地文件包含

通過瀏覽器包含web服務器上的文件,這種漏洞是因為瀏覽器包含文件時沒有進行嚴格 的過濾允許遍歷目錄的字符注入瀏覽器并執行。
總的來說就是被包含的文件在服務器本地

遠程文件包含

在遠程服務器上預先設置好的腳本,然后攻擊者利用該漏洞包含一個遠程的文件,這種漏洞的出現是因為瀏覽器對用戶的輸入沒有進行檢查,導致不同程度的信息泄露、拒絕服務攻擊 甚至在目標服務器上執行代碼
簡單的說就是被包含的文件在第三方服務器

文件包含常用函數

php為例,常用的文件包含函數有:

Include() #當包含并運行指定文件時,包含的外部文件發生錯誤,系統會給出警告,但整個php文件還會繼續執行。 Require() /*require()與 include()的區別在于 require()執行如果發生錯誤,函數會輸出 錯誤信息,并終止腳本的運行。*/ include_once() /*和include沒有什么區別,只是在導入函數之前先檢測下該文件是否被include過,如果已經執行了一遍,那么就不在進行第二次的include操作。*/ require_once() #功能與 require()相同,區別在于當重復調用同一文件時,程序只調用一次

DVWA練習

了解了一些文件包含漏洞的簡介和常用函數,下面就通過萬能的DVWA來進行文件包含漏洞的練習

注意: 使用遠程包含需要開啟allow_url_include

在此之前,先來了解一下./和../以及/

/ 根目錄 ./ 是當前目錄 ../ 返回到上一級目錄 ../../ 返回了兩級目錄 .\ 、..\和./../意義相同

low

觀察源碼發現直接是get方法進去,沒有任何過濾,那么就來執行文件包含漏洞
輸入

?page=../../phpinfo.php

發現
本地文件包含成功

遠程文件包含
這里就先在自己的服務器根目錄(WWW目錄下)下創建一個文件
然后通過遠程文件包含來執行
輸入

?page=http://127.0.0.1/file.txt

發現遠程包含成功

這里也可以用虛擬機和主機來進行遠程文件包含漏洞的測試,不過這里就以本地的服務器來進行測試。

medium

str_replace() 函數以其他字符替換字符串中的一些字符(區分大小寫)

發現medium已經過濾了http://、../等,那么就來構造這樣的方法來進行繞過

?page=..././..././phpinfo.php

源碼中過濾了../,所以我們輸入的經過過濾后變成

?page=../../phpinfo.php

這樣依舊是沒有過濾掉../,通過錯位進行拼接成../

其實感覺繞過方法大多都是互通的,這種繞過在SQL注入、XSS攻擊等都是出現過的

本地文件包含成功,接下來來嘗試遠程文件包含

源碼中是過濾了http://、https://,可以嘗試大小寫進行繞過,也可以通過雙寫進行繞過例如:httphttp://://

?page=Http://127.0.0.1/file.txt

即可繞過

High

fnmatch() 函數根據指定的模式來匹配文件名或字符串。

源碼中限制了文件名來防止惡意文件包含,并且!fnmatch( "file*", $file )代碼使用了fnmatch函數檢查page參數,要求page參數的開頭必須是file,服務器才會去包含相應的文件。所以就用到了file協議,就來了解一下file協議。

file協議

本地文件傳輸協議 ,file協議主要用于訪問本地計算機中的文件.

file協議的基本格式

file:///文件路徑 如打開D盤www文件下的PHPinfo文件 file:///D:/www/phpinfo 注意:后面必須是絕對路徑:

了解了file協議,就構造相應的語句即可進行文件包含

?page=file:///D:/phpstuy/www/file.txt

impossible

分析一下源碼

發現if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" )這一句代碼已經將page的參數限制成固定的值了,所以沒有辦法進行文件包含。

總結:這次算是大致了解了一些文件包含漏洞的知識,但是文件包含還有很多繞過姿勢,接下來繼續學習!

總結

以上是生活随笔為你收集整理的文件包含漏洞——DVWA练习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。