書き込みは行わず、初心者向けの詳細な説明のみを書き込んでください
すべての場所を解析します
レビューコード
<?php
include "flag.php";
$a = @$_REQUEST['hello'];
eval( "var_dump($a);");
show_source(__FILE__);
?>
含める ""
インクルードファイルは問題、抜け穴を解決するための鍵です
PHPのincludeステートメントとrequireステートメント
includeステートメントまたはrequireステートメントを使用すると、PHPファイルの内容を別のPHPファイルに挿入できます(サーバーが実行する前に)。
includeステートメントとrequireステートメントは、エラー処理を除いて同じです。
requireは致命的なエラー(E_COMPILE_ERROR)を生成し、
警告の生成のみを含むスクリプトを停止し(E_WARNING)、スクリプトは続行されます。
したがって、実行を続行して結果をユーザーに出力する場合は、含まれているファイルが欠落している場合でも、インクルードを使用してください。それ以外の場合、フレームワーク、CMS、または複雑なPHPアプリケーションプログラミングでは、常にrequireを使用して実行フローへのキーファイルを参照します。これは、重要なファイルが誤って失われた場合に、アプリケーションのセキュリティと整合性を向上させるのに役立ちます。
インクルードファイルは多くの作業を節約します。これは、すべてのページに標準のヘッダー、フッター、またはメニューファイルを作成できることを意味します。次に、ヘッダーを更新する必要がある場合は、このヘッダーインクルードファイルを更新するだけで済みます。
リンク:変数の使用法を含める
$ _REQUEST
PHP $ _REQUESTは、HTMLフォームによって送信されたデータを収集するために使用されます。
phpの$ _REQUESTは、POSTメソッドとGETメソッドによって送信されたデータを取得できます。欠点:速度が比較的遅いです。
<?php
$fn=$_REQUEST["fname"];
$ln=$_REQUEST["lname"];
echo $fn.$ln;
?>
@?$
@エラーメッセージをシールドします。@がある場合、接続にエラーがあってもエラーは報告されません。
エラーメッセージに基づいて他の人がデータベース構造を推測してインジェクション攻撃などのハッキング攻撃を実行するのを防ぎます。
$ aは変数aを意味します
?:
接続機能:
http ://www.xxx.com/Show.asp?id = 77&nameid = 2905210001&page = 1
キャッシュのクリア:
http ://www.xxxxx.com/index.html
http://www.xxxxx.com/index.html?test123123
2つのURLは同じページを開きますが、後ろに疑問符があり、キャッシュが呼び出されていないことコンテンツは新しいアドレスと見なされ、再度読み取られます。
eval()
eval()関数は、文字列式を実行し、式の値を返すために使用されます。
eval関数の機能は、実行用のphpコードとして文字列について話すことです。
a = 1
b = 2
eval("a + b")
>>>3
つまり、
var_dump($ a)はここで実行されます
var_dump()
php出力ステートメント
show_source(FILE);
このphpをコードハイライトの形で表示します
初心者の理解、訂正してください
print_r()
print_r:配列オブジェクトなどの複合型を出力し、変数に関するわかりやすい情報を出力します。
国旗
?hello = $ a); print_r(file( "./ flag.php"));