【第四強ネットカップ】:アクティブ

ソースコード:

<?php
highlight_file("index.php");

if(preg_match("/flag/i", $_GET["ip"]))
{
    
    
    die("no flag");
}

system("ping -c 3 $_GET[ip]");

?> 

明白なコマンド実行:
ここに画像の説明を挿入

上記から、flag.phpが現在のディレクトリにあることがわかりますので、直接cat ./flag?
しかし、人々はフラグキーワードをフィルタリングし、それをバイパスする方法は非常に単純です(実際、私はそれを少し前に見つけたばかりです...)、それをバイパスする方法はたくさんあります;
キーワードに一致する限りアイデアも非常に単純です。

バイパス

1.変数を使用してバイパスします。

変数に値を割り当ててスプライシングすることで、以下をバイパスできます:
ペイロード:

?ip=1;a=fl;b=ag;cat $a$b.php

ソースコードを見る:
ここに画像の説明を挿入

2. base64でエンコード

実行する必要があるコマンドは、base64エンコーディングに渡され、デコードされて実行されます

?id=1;cat `echo 'Li9mbGFnLnBocAo=' | base64 -d`

ここでそれについて話す:バックティック `はLinuxコマンドラインでコマンド置換の役割を果たす。コマンド置換は、シェルがコマンドラインの任意の場所にコマンドの標準出力を挿入できることを意味します。つまり、引用されたコマンドの実行を完了し、結果を置き換えることができます。つまり、 `でbase64によってデコードされたコマンドの出力結果がコマンドに返されます。これにより、制限を回避できます。
たとえば、これはバックティック `だけではなく、$()はシェルでコマンド置換効果を再生することもできます。)また、cat ./flag.phpを間接的に実行します。
ここに画像の説明を挿入

ソースコードを見る:
ここに画像の説明を挿入

3引用符でキーワードをバイパスする

主な目的は、キーワードが一致しないようにすることです。
ペイロードの処理は簡単です。

?id=1;cat ./fl'ag'.php

ソースコードを見る:
ここに画像の説明を挿入

4.スペースの周りをフィルタリング

フィルタースペースに遭遇した場合\${IFS}、<、 $IFS、\$IFS$9、文字がそれらを置き換えるのを待つことができます。

もちろん、迂回姿勢は上記のものよりも間違いなく多いので、順応する方法を知る必要があります。

国旗:

flag:flag{
    
    I_like_qwb_web

おすすめ

転載: blog.csdn.net/qq_36618918/article/details/108172711