web-dev-qa-db-ja.com

DVWA-奇妙なコマンドインジェクション動作(高)

HighでOSコマンドインジェクションレベルを完了した後、私はそれを書くことができるように少し深く掘り下げていました。解決策はWebアプリで機能しますが、Linux端末で同じコマンドエラーが発生するようです。

高レベルのDVWAコマンド

127.0.0.1|  |cat /etc/passwd

これは機能します。 pingの結果は出力しませんが、/ etc/passwdの内容を画面に出力します

Linuxターミナルでまったく同じコマンドを使用すると、エラーになります。 Webアプリケーションを模倣するために使用されるコード

ping -c 3 127.0.0.1|  |cat /etc/passwd

エラーが表示されます

bash: syntax error near unexpected token `|'

スペースを削除すると、コマンドは期待どおりに機能します。 Shell_exec PHPコマンドがコマンドをOSに渡し、OSがコマンドを実行して結果を表示する理由を説明できませんが、直接的なアプローチのエラーです。技術的にはDVWAコマンドは機能しませんか?

1
Paulst30

故意に欠陥のあるブラックリストが原因です。パイプの後にスペースが続くと、空の文字列に置き換えられます。 2番目のパイプの直後にはcが続くため、ブラックリストと一致せず、すり抜けます。最初のパイプとスペースは冗長です。 ip%0acatおよびip%26%26catと同様に、ip | catも機能するはずです。

1
wireghoul

ブラックリストのDVWAコマンドインジェクションHignファイル

//ブラックリストを設定$ substitutions = array( '&' => ''、 ';' => ''、 '|' => ''、 '-' => ''、 '$' => ''、 ' ( '=>' '、') '=>' '、' `'=>' '、' || '=>' '、);

  • これはブラックリストにない「&&」です。

  • これは「&&」を使用しています。 ping -c4 127.0.0.1 && echo "OK!"

0
ugur.ercan