1. 程式人生 > 資訊 >斷碼清倉:奧康男士 52 款真皮商務/休閒皮鞋 139 元(3 期免息)

斷碼清倉:奧康男士 52 款真皮商務/休閒皮鞋 139 元(3 期免息)

[SUCTF 2019]CheckIn

1.首先嚐試使用一句話木馬

illegal suffix!

2.嘗試使用改字尾名的方式進行上傳,發現存在<?檢測

@eval($_POST["a"]); 提示:exif_imagetype:not image!,說明存在exif_imagetype函式,這個函式就是簡單的檢測下檔案的首格式,很簡單加個GIF89a去嘗試即可 最終成功上傳我們的圖片馬,但是如何去讓圖片馬以php的方式去執行呢,最先想到的就是htacess的方式,嘗試發現並不能使用成功。 4.看看大佬的wp,發現一種沒見過的玩意.user.ini,正好借這個機會,把之前沒太弄懂的htaccess拿來比較下,進行學習 > ### .htaccess > > httpd-conf 是 Apache 的系統配置檔案,一個全域性的配置檔案,對整個 web 服務起作用;而.htaccess 也是 Apache 的配置檔案,不過相當於一個區域性配置檔案,只對該檔案所在目錄下的檔案起作用。 > > #### 例項 > > 在繞過檔案上傳的限制中,通常在 Apache 全域性配置檔案 httpd.conf 中有這樣一條配置: > > ``` > AddType application/x-httpd-php .php .phtml > ``` > > 這條配置的意思就是將.php、.phtml 檔案字尾的檔案當做 php 檔案執行,如果開啟了這條配置,就可以上傳.phtml 檔案在執行 php 程式碼,這也就是為什麼在檔案上傳時可以嘗試上傳.phtml,不過在高版本中這條配置預設是關閉的,也就是隻能解析.php 檔案字尾。 > > 或者這條配置: > > ``` > SetHandler application/x-httpd-php > ``` > > > > 將所有檔案都解析為 php 檔案。 > > 通常全域性檔案我們都是不可更改的,而 Apache 還有一個區域性配置檔案.htaccess,這個配置檔案只對該目錄所在的 web 目錄起作用,例如:我們在 www 目錄下有一個.htaccess 配置檔案,配置內容為 `AddType application/x-httpd-php .jpg` ,將 jpg 檔案當做 PHP 檔案解析。這樣就可以直接解析 jpg 字尾的 webshell。 > > ``` > // .htaccessAddType application/x-httpd-php .jpg// 1.jpg



訪問 1.jpg,當做 PHP 解析。  



#### 侷限

.htaccess 配置檔案只在 Apache 伺服器中起作用。  

### .user.ini

php.ini 是 php 的一個全域性配置檔案,對整個 web 服務起作用;而.user.ini 和.htaccess 一樣是目錄的配置檔案,.user.ini 就是使用者自定義的一個 php.ini,通常用這個檔案來構造後門和隱藏後門。

#### 例項

php 配置項中有兩個配置可以起到一些作用

auto_prepend_file = //包含在檔案頭auto_append_file = //包含在檔案尾




這兩個配置項的作用相當於一個檔案包含,比如

// .user.iniauto_prepend_file = 1.jpg// 1.jpg// 11.php




也就是在一個目錄下有.user.ini 這個配置檔案,配置內容為上,有 1.jpg,同時該目錄下還需要有.php 字尾的檔案,`auto_prepend_file = 1.jpg` 這個配置的意思就是在當前目錄下的.php 檔案包含 1.jpg 這個圖片,在此處相當於在 11.php 檔案頭插入了 `require('1.jpg')` 這條語句,也就是說相當於檔案包含。
另一條配置包含在檔案尾,如果遇到了 exit 語句的話就會失效。

.user.ini 使用範圍很廣,不僅限於 Apache 伺服器,同樣適用於 Nginx 伺服器,只要伺服器啟用了 fastcgi 模式 (通常非執行緒安全模式使用的就是 fastcgi 模式)。  



#### 侷限

在.user.ini 中使用這條配置的使用也說了是在同目錄下的其他.php 檔案中包含配置中所指定的檔案,也就是說需要該目錄下存在.php 檔案,通常在檔案上傳中,一般是專門有一個目錄用來存在圖片,可能小概率會存在.php 檔案。  

但是有時可以使用 `../` 來將檔案上傳到其他目錄,達到一個利用的效果。  

5.總結一下,htaccess這個方式是被用來使用在apache伺服器中,對於區域性的檔案,讓區域性內的檔案解析成為你想指定的檔案

而.user.ini則是對於全域性檔案的,它可以起到一種類似檔案包含的作用,它需要本來的資料夾中存在一個可執行的php檔案,使用這個配置想,可以將我們的jpg格式的檔案包含於這個php檔案中去執行