upload-labs 1-21關通關記錄
阿新 • • 發佈:2021-01-10
0x01:
檢查原始碼,發現JS前端驗證,關閉JS即可連線,或者手動新增.php,或者上傳1.jpg,再抓包修改為php
0X02:
if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif'))
僅存在判斷connect-type,抓包修改為image/jpeg,image/png,image/gif,BP抓包,可上傳
0X03:
檢視原始碼,嘗試用php3,phtml繞過
0X04:
黑名單驗證:(包含了所有的黑名單檔案) $deny_ext = array(".php",".php5",".php4",".php3",".php2",".php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".ini"); .htaccess檔案,全稱為Hypertext(超文字入口),提供了針對目錄改編配置的方法,在一個特定的文件中放置一個包含一個或者多個指令的檔案,以作用於此目錄及其所有子目錄。作為使用者,所能使用的命令受限制,管理員可以通過Apache的AllowOverride來設定 0上傳.htaccess檔案,寫入SetHandler application/x-httpd-php,所有檔案解析為PHP 然後上傳<?php phpinfo(); ?> 可以解析
0x05:
邏輯繞過和第十關一樣 加上一個空格
0x06:
$file_name = strtolower($file_ext) //轉換為小寫
原始碼沒有大小寫,轉為為2.PhP,可以上傳
0x07:
沒有$file_ext = trim($file_ext) 沒有首尾去空
0x08:
沒有進行.處理,利用windows特性,會自動去除字尾的.,字尾加.進行繞過
0X09:
沒有進行::DATA繞過,可在後綴名加::DATA繞過 ::DATA會把這之後的資料當成文 件流處理,且不會檢查字尾名,保持之前的::DATA之前的檔名 $file_ext = str_ireplace('::DATA','',file_ext); 上傳成功出現403頁面,不能正常解析
0x0A:
先進行去除最後的.操作,再進行首位去空操作
修改檔名為info.php. . 經過處理後稱為upload_path/info.php.
0X0B:
$fire_name = str_ireplace("deny_")(deny_ext,"",$file_name) 把帶有黑名單中的字尾變為空
例子:
echo str_ireplace("world","shanghai","world world!")
hello shanghai
上傳.pphphp
迴圈過濾還是遞迴過濾
接下來為白名單繞過
0X0C:
00繞過。。。檔案系統讀到0X00時,會認為檔案已經結束。利用00截斷就是利用程式設計師在寫程式時對檔案的上傳路徑過濾不嚴格,產生0X00,%00上傳截斷。
因為php的底層基於C語言開發的,c語言的截斷就是%00截斷
抓包將info.php.jpg後面的一個.換為0x00,在上傳時,當系統檔案讀到0x00時,會認為檔案已經結束。從而將info.php.jpg的內容寫入到evil.php中,從而達到攻擊的目的。
0X0D:
GET型和POST型
0X0E,OXOF:
getimagesize() 函式將測定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 影象檔案的大小並返回影象的尺寸以及檔案型別和一個可以用於普通 HTML 檔案中 IMG 標記中的 height/width 文字字串。 如果不能訪問 filename 指定的影象或者其不是有效的影象,getimagesize() 將返回 FALSE 併產生一條 E_WARNING 級的錯誤。
0XA1:
圖片馬
0XA2:
。。。圖片渲染 winhex可改
0XA3:
條件競爭
0XA4:
圖片馬
0XA5:
空格
0XA6:
陣列
注:沒有詳細說明的靶場會在滲透測試體系化學習筆記會補充