01
隨便上傳個文件
發現對于上傳類型有限制
查看頁面代碼發現是js的過濾直接關閉js
上傳成功
右鍵圖片在新建標簽頁打開文件
這里直接抓包改名字也行
02
抓包修改后綴名
03
發現后端做了檢測抓包修改失敗
大小寫繞過失敗,php特性php1等會被當成php執行
這里圖片的名稱已經不是我們傳遞進去的名稱了在響應里面看到
這里是因為phpstudy的http配置文件中沒有允許.php3格式所以顯示不了
04
這里和上面的差別在于沒有對我們傳入的文件名做改變
php3也被過濾了使用.htaccess
htaccess文件是Apache服務器中的一個配置文件,它負責相關目錄下的網頁配置。通過htaccess文件,可以幫我們實現:網頁301重定向、自定義404錯誤頁面、改變文件擴展名、允許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認文檔等功能。
我們在htaccess文件中可以添加
AddHandler php5-script .jpg 使用php5-script將特定的拓展文件映射為php文件AddType application/x-httpd-php .jpg 將特定的拓展文件映射為php文件Sethandler application/x-httpd-php 將當前目錄下所有文件都映射為php文件
上傳.htaccess
05
這里沒有對我們傳入的文件進行大小寫轉換
訪問
06.
這里沒有對文件后面的空格進行處理,可以在文件后面加上空格,由于windows特性,文件名后空格會被直接刪除
07
這里沒有對文件后面的.做處理
08
這里沒有對后綴名有沒有::$DATA進行判斷,利用windows系統NTFS特征可以繞過上傳
在window的時候如果文件名+"::$DATA"會把::$DATA之后的數據當成文件流處理,不會檢測后綴名,且保持::$DATA之前的文件名,其實和空格繞過點繞過類似
09
這里對于.和空格的檢測只進行一次我們使用. .先進行.的處理再到 的處理就可以逃逸最先的.
10
這里的對于后綴名的處理和之前不一樣,這里采用將匹配到的后綴名替換為空使用雙寫繞過
11
這里使用%00截斷
利用條件
php版本小于 5.3.4
php.ini 中magic_quotes_gpc設置為off原理上傳 www.xxx.com/xxx.php%00a.jpg --> www.xxx.com/xxx.php
后面是截斷后的成果%00后面不加數據也沒關系
12.
第12和11不同在于接收方式不同,12是通過post的方式接收的
這里要對%00進行urldecode編碼
13.
制作圖片碼
14.
和上一題的差別在于通過getimagesize函數對目標的十六進制的前幾個字符串進行讀取。png的文所以這關和第十三關一樣,我們只需要用打開圖片馬,在前面加上GIF89A,保存為14.png,然后和上題一樣
15.
用了exif_imagetype() 讀取一個圖像的第一個字節并檢查其簽名和13,14關一樣。