文件上傳+繞過方法+菜刀的基本用法


關於原理方面就不加贅述了,可以Google一下,我貼一下幾百年前我的理解:原理:上傳一個腳本(jsp,asp,php),然后就得到機子的shell (哇,感覺很粗糙)

文件上傳漏洞的幾種常見的姿勢:

1.js前端驗證
2.mime
3.后綴名
4.修改字母大小寫(同第一種,就是把PHP幾種大小寫試一試 還有可能是phtml)
5.00截斷
6.上傳含有一句話的圖片

最簡單的:先直接上傳一個php文件,看是否正確


1.js前端驗證:

     一般都是在網頁上寫一段JavaScript腳本,校驗上傳文件的后綴名,有白名單形式也有黑名單形式。
  判斷方式:在瀏覽加載文件,但還未點擊上傳按鈕時便彈出對話框,內容如:只允許上傳.jpg/.jpeg/.png后綴名的文件,而此時並沒有發送數據包。

解決方法:
 1):抓包,修改文件后綴名 比如:傳上去的是一個jpg格式,然后改成php  要看能不能傳上去  如果傳不上去就改后綴 然后抓包改成php
 2):直接F9,HTML里面 將filename="xxser.jpg"修改為filename="1.php"
  這里注意第二種,把長度修改了,要是之前Content-Length =200 這里就要修改為196

2.MIME驗證:
MIME類型用來設定某種擴展名文件的打開方式,當具有該擴展名文件被訪問時,
瀏覽器會自動使用指定的應用程序來打開。

1)content-type字段校驗:

   GIF 圖片的MIME image/gif
    CSS            text/css
    jpg            image/jpg

比如:上傳了一個php,抓包,看到php的MIME類型為 application/php ,

      而在Upload.php判斷文件類型是否為image/jpeg,這里就無法通過驗證

解決:在包里面把Content-Type 更改為 image/jpeg ,通過驗證

 

 2)文件頭校驗

  可以通過自己寫正則匹配,判斷文件頭內容是否符合要求,這里舉幾個常見的文件頭對應關系:
(1) .JPEG;.JPE;.JPG,”JPGGraphic File”
(2) .gif,”GIF 89A”
(3) .zip,”Zip Compressed”
(4) .doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”

解決辦法:在木馬內容基礎上再加了一些文件信息,有點像下面的結構
         GIF89a<?php phpinfo(); ?>


3.后綴名( 00截斷) 這是一個講述截斷在文件上傳和包含之中的利用:http://www.2cto.com/article/201502/377462.html
客戶端傳輸到服務端 在服務端:緩存上傳的文件,然后服務器端進行驗證,如果符合要求,就上傳到目錄, 如果不符合,就直接把緩存文件刪除

方法:抓包,將上傳的1.jpg改成 2.php(空格)1.jpg 然后單擊HEX進入十六進制編輯,
      將文件名中空格的十六進制20改成00 (這里就是去找到改的那句話),單擊“GO”
      發現成功上傳2.php 2.php后面的字符已經被截斷(可以在Raw里面找到)


6.上傳含有一句話的圖片
 
  上傳含有一句話的圖片,上菜刀,右鍵添加shell,地址欄輸入 上傳地址


講述中國菜刀用法
  這里上傳成功了(一般php都是傳自己寫的一句話木馬),就在網址欄得到網址欄了,打開菜刀,
 右鍵添加,編碼格式選擇UTF-8,腳本類型PHP ,然后連接,shell拿到了,然后就開始可以去搞事情了
 或者flag拿到了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM