1. コード実行の概要
コード実行の定義:
------ アプリケーションが文字列をコードに変換できる関数 (PHP の eval など) を呼び出すとき、ユーザーが文字列を制御しているかどうかは考慮されないため、コード実行の脆弱性が発生します。リモート コード実行は、実際にはサーバー Web サイトのコードを呼び出して実行します。
------ コード実行の脆弱性とは、アプリケーション自体が厳密にフィルタリングされておらず、ユーザーが実行リクエストを通じてアプリケーションにコードを挿入できることを意味します。
2. コード実行関連機能
- PHP:eval、assert
- JavaScript:eval
- Vbscript: 実行、評価
- Python:実行
- Java: Java には、PHP の eval 関数のような、文字列をコード実行に直接変換できる関数はありませんが、リフレクション メカニズムがあり、OGNL、SpEL など、リフレクション メカニズムに基づいたさまざまな式エンジンがあります。 、MVEL など。これらはコード実行の脆弱性を引き起こす可能性があります。
1、評価
文字列を関数として実行するには、セミコロン; で終わる完全なステートメントを渡す必要があります。最も一般的に使用される関数は次のとおりです。
<?php eval('echo "hello";'); ?>
2、アサート
文字列であるかどうかを判断し、文字列である場合はコードとして実行されます。
在php7.0.29之后的版本不支持动态调用
低版本
<?php assert($_POST['a']); ?>
7.0.29之后
<?php
$a = 'assert';
$a(phpinfo());
?>
3. ${ } コードを実行します
中間のphpコードが解析されます。
${
phpinfo()};
3. コマンド実行とコード実行の違い
-
関与する機能が異なります
-
コマンド実行
:一般にオペレーティングシステムのコマンド
远程
コードの実行:一般にスクリプトコードのことを指します。