ホームページ バックエンド開発 PHPチュートリアル PHP-SOCKETS 予備プログラミング_PHP チュートリアル

PHP-SOCKETS 予備プログラミング_PHP チュートリアル

Jul 13, 2016 pm 05:19 PM
msn 著者 勉強 プログラミング

著者:darkness[bst]

msn:cqxy[at]21cn.net

私は 2 か月間 PHP を学習して多くのことを学びましたが、他の人たちとは異なり、socket.php の方が好きです。そこで、最も基本的なものから、socket_raw までの一連の php ソケットの読み取りメモを書くことにしました。例には、ポート転送 (ファイアウォールの突破)、動的ネットワーク タイプの exp、ポート スキャン、php バックドア、などが含まれます。勉強の都合上、1 週間に 1 つの記事しか書けませんが、皆さんが php シェル プログラミングに専念できることを願っています。世界で最も人気のあるスクリプト言語。 Webプログラミングで広く使用されています。何が言いたいかというと、phpはWebに優れているだけでなく、シェルにも優れているということです。ただ、人々は Perl を使ってシェル スクリプトを書くことに慣れているというだけです。私は PHP の専門家ではなく、PHP に触ってまだ数週間しか経っていないことをここで断っておきます。間違いがあればご指摘ください。私にメールを送って一緒に php について話し合うこともできます。

前提知識:

PHP について私が最も魅力を感じているのは、実際には、VB の Winsock を簡単に使用でき、VB を使用して一般的に使用される Winsock プログラムを作成できることです。それでも私はphpを選択しました。クロスプラットフォームだからです。

php はデフォルトでは高度なソケットをサポートしておらず、「カプセル化された」fsockopen などのいくつかの機能のみをサポートしています。 php の拡​​張機能として、それをサポートするようにソケットを設定する必要があります。 Windowsの場合はphpの設定が必要です。 ini、phpで。 ini で、「windows extensions」という行を見つけて、「extension=php_sockets.dll」の前にあるセミコロンを削除します。それで大丈夫です。 *nix では、コンパイル時に -enable-sockets コマンドを追加する必要があります。 dl() 関数を使用しない場合、php は php_sockets.dll と同じディレクトリにある必要があります。 OK、PHPソケットの設定は完了です。

以下は実行の問題です

ターミナルでphpスクリプトを実行するのは非常に簡単です。 Windows では c:phpphp.exe ╟q test.php、*nix では、Perl と同様に、php ファイルを php で実行するには事前に宣言する必要があります。 #!/usr/local/bin/php ╟q .、次に ./test.php のようになります。パラメータqはphpヘッダ情報を出力しないことを意味します。

入力パラメータの問題:

PHPシェルでパラメータを入力する方法を言う人がいます。 Web 上で次のようなパラメータを入力できます
http://xxx.com/aa.php?
パラメータ 1=xxxx&パラメータ 2=ssssss。 php が perl と同じであり、同様のパラメーター関数があることは問題ではありません。公式の説明を見てみましょう

"argv"

スクリプトに渡されるパラメータ。スクリプトがコマンド ライン モードで実行されると、argv 変数が C スタイルのコマンド ライン引数としてプログラムに渡されます。 get メソッドが呼び出されると、この変数には要求されたデータが含まれます。 "argc"

プログラムに渡されるコマンド ライン引数の数が含まれます (コマンド ライン モードで実行している場合)。



ははは、簡単に言えば。例を挙げてみましょう




以下はコードです:


http://www.bugkidz.org/upload.php< ;/a> ファイルパス "; エコー " - - - - - - - - - - - - - - - - - - - - - - - - "; } $host = $argv[1]; $url = $argv[2]; $path = $argv[3]; ?>

[ctrl+a すべて選択]
理解していただけると思いますが、ここで argc[0] はプログラム自体を指します。次のようにすることもできます
print(%s,$argv[1]);

この短い段落を書くために正午に 1 時間を費やしました


前の段落では操作について説明しました。コマンドラインの。詳細については、

http://www.php.net/manual/zh/features.commandline.php



1を参照してください。 fopen
fopenのアプリケーションは、カプセル化されたソケット関数と呼ぶこともできます。ファイルの読み書きだけでなく、ソケットにも使用されます。 fopen は、他の高級言語の inet コントロール/クラスと同等であり、fsockopen と比較して、URL に対してより高度な操作を行います。 fopenの使い方
$s = fopen ($url, mode);
fopenのmode属性:
mode 説明
r ファイルポインタをファイルヘッダに向けて、読み取り専用モードで開きます。
r+ 読み取り/書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントします。
w 書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。
w+ は読み取り/書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。
a 書き込みモードで開き、ファイル ポインタをファイルの末尾に指します。ファイルが存在しない場合は、作成してみてください。
a+ は読み取り/書き込みモードで開き、ファイル ポインターがファイルの末尾を指します。ファイルが存在しない場合は、作成してみてください。
x 作成して書き込み用に開き、ファイル ポインターをファイル ヘッダーにポイントします。ファイルが既に存在する場合、 fopen() 呼び出しは失敗して false を返し、e_warning レベルのエラー メッセージが生成されます。ファイルが存在しない場合は、作成してみてください。これは、基礎となる open(2) システム コールに o_excl|o_creat フラグを指定するのと同じです。このオプションは PHP 4.3.2 以降でサポートされており、ローカル ファイルにのみ使用できます。
x+ は、ファイル ポインターをファイル ヘッダーに向けて作成し、読み取りと書き込みのために開きます。ファイルが既に存在する場合、 fopen() 呼び出しは失敗して false を返し、e_warning レベルのエラー メッセージが生成されます。ファイルが存在しない場合は、作成してみてください。これは、基礎となる open(2) システム コールに o_excl|o_creat フラグを指定するのと同じです。このオプションは PHP 4.3.2 以降でサポートされており、ローカル ファイルにのみ使用できます。


ローカルファイル操作に使用され、inetにも使用できます。すごくクールじゃないですか?
Web サイトの iis ディレクトリに書き込み権限があるかどうかをテストしたいとします。
次のように書くことができます
$s = fopen("http://www.bugkidz.org","x+") または die("書き込み許可が存在しません")
それが存在する場合は、次のように書くことができます引き続き次のステートメントを作成します。 fwrite を使用してリモートでファイルを書き込みます。
ただし、一般的な Web サイトには読み取り専用の権限があります
$s =fopen("http://www.bugkidz.org/index.php?id=1","r");
このようにすると、読み込むことができます http://www.bugkidz.org/index.php?id=1 のコンテンツですが、完全なファイルのコンテンツを取得するには処理する必要があります
この方法
while (!feof($s)) {
echo fgets($ s, 1024);
}
SQL インジェクションには fopen が一番便利だと思います。
function phpinet($url)
{
fopen($url,"r") or die("URL を開くときにエラーが発生しました");


while (!feof($s)) {
$cahe = fgets($s , 1024);
}

retrun $cahe;
fclose($s)
}


この関数はvbのinet.openurlに相当します
fsockopenファミリー関数の使用
fsockopenはカプセル化されたソケット関数でもあります .これは、VB の Winsock コントロールに似ています。残念ながら、アクティブなソケット接続はサポートされていますが、バインドやリッスンなどはサポートされていません。これらの関数を実装する必要がある場合は、PHP で高度なソケット プログラミングを使用する必要があります。それでも、 fsockopen 関数はほとんどのニーズを満たすことができます。
fsockopen は次のように使用します
resource fsockopen (string target, int port [, int errno [, string errstr [, float timeout]]])

例:
$sock = fsockopen("192.168.0.1",80,$errno , $errstr,30);
最初の 2 つはアドレスとポート、真ん中の 2 つはエラー関連の変数、最後の 2 つはタイムアウト設定です。
通常は $sock = fsockopen("192.168.0.1",80); で十分です。
$sock = fsockopen("192.168.0.1",80); これは典型的な TCP 接続です。 UDP 接続は次のようになります
$sock = fsockopen("udp://192.168.0.1",53);
これを使用して TFTP クライアントを記述することも可能です。

fsockopen アプリケーションの例:

例 1、単純な HTTP セッション。

コード


以下はコードです:

[ctrl+a 全選択]

大まかな流れはこんな感じ
fsockopenリソースを作成し、送信内容を定義し、fwrite関数またはfputs関数を使って定義内容を書き込み、取得した内容を出力ファイルの終わりに達するまでコンテンツを 1 行ずつ表示します。fgets 関数または fread を使用します。 fclose を使用して、作成した fsockopen リソースを閉じます。
ANGEL は PHP ポート スキャン ツールを作成して投稿しました
http://www.4ngel.net/article/20.htm

単純な EXP 送信フレームワークを作成するために fsockopen を選択することは間違いなく良いアイデアです。とても簡単です。
私の PHP アップロードの脆弱性エクスプロイトを見てください。

コード


以下はコードです:

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/532676.html技術記事著者: Darkness[bst] msn:cqxy[at]21cn.net 私は 2 か月間 PHP を学び、多くのことを学びましたが、他のものと違って、PHP にはソケットに関する記事が少なすぎるので、シリーズを書くことにしました。 ..
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

正規表現を使用してPHP配列から重複した値を削除します 正規表現を使用してPHP配列から重複した値を削除します Apr 26, 2024 pm 04:33 PM

正規表現を使用して PHP 配列から重複値を削除する方法: 正規表現 /(.*)(.+)/i を使用して、重複値を照合して置換します。配列要素を反復処理し、preg_match を使用して一致をチェックします。一致する場合は値をスキップし、一致しない場合は重複値のない新しい配列に追加します。

プログラミングは何のためにあるのか、それを学ぶと何の役に立つのか? プログラミングは何のためにあるのか、それを学ぶと何の役に立つのか? Apr 28, 2024 pm 01:34 PM

1. プログラミングは、Web サイト、モバイル アプリケーション、ゲーム、データ分析ツールなど、さまざまなソフトウェアやアプリケーションの開発に使用できます。その応用分野は非常に幅広く、科学研究、医療、金融、教育、エンターテイメントなど、ほぼすべての業界をカバーしています。 2. プログラミングを学ぶことは、問題解決スキルと論理的思考スキルを向上させるのに役立ちます。プログラミング中、問題を分析して理解し、解決策を見つけてコードに変換する必要があります。この考え方は、分析能力と抽象能力を養い、実際的な問題を解決する能力を向上させることができます。

Golang を使用してブラウザベースのアプリケーションを構築する Golang を使用してブラウザベースのアプリケーションを構築する Apr 08, 2024 am 09:24 AM

Golang を使用してブラウザベースのアプリケーションを構築する Golang は JavaScript と組み合わせて、動的なフロントエンド エクスペリエンスを構築します。 Golang をインストールする: https://golang.org/doc/install にアクセスします。 Golang プロジェクトをセットアップします。 main.go というファイルを作成します。 GorillaWebToolkit の使用: HTTP リクエストを処理するための GorillaWebToolkit コードを追加します。 HTML テンプレートの作成: template サブディレクトリに、メイン テンプレートであるindex.html を作成します。

コーディングの鍵: 初心者のための Python の力を解き放つ コーディングの鍵: 初心者のための Python の力を解き放つ Oct 11, 2024 pm 12:17 PM

Python は、学習の容易さと強力な機能により、初心者にとって理想的なプログラミング入門言語です。その基本は次のとおりです。 変数: データ (数値、文字列、リストなど) を保存するために使用されます。データ型: 変数内のデータの型 (整数、浮動小数点など) を定義します。演算子: 数学的な演算と比較に使用されます。制御フロー: コード実行のフロー (条件文、ループ) を制御します。

Java をシンプルに: プログラミング能力を高める初心者向けガイド Java をシンプルに: プログラミング能力を高める初心者向けガイド Oct 11, 2024 pm 06:30 PM

Java をシンプルに: プログラミング能力の初心者向けガイド はじめに Java は、モバイル アプリケーションからエンタープライズ レベルのシステムに至るまで、あらゆるもので使用される強力なプログラミング言語です。初心者にとって、Java の構文はシンプルで理解しやすいため、プログラミングの学習に最適です。基本構文 Java は、クラスベースのオブジェクト指向プログラミング パラダイムを使用します。クラスは、関連するデータと動作をまとめて編成するテンプレートです。簡単な Java クラスの例を次に示します。 publicclassperson{privateStringname;privateintage;

Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Oct 11, 2024 pm 08:58 PM

Python は、問題解決の初心者に力を与えます。ユーザーフレンドリーな構文、広範なライブラリ、変数、条件文、ループによる効率的なコード開発などの機能を備えています。データの管理からプログラム フローの制御、反復的なタスクの実行まで、Python が提供します

未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

C の謎を解く: 新人プログラマーのための明確でシンプルな道 C の謎を解く: 新人プログラマーのための明確でシンプルな道 Oct 11, 2024 pm 10:47 PM

C は、初心者がシステム プログラミングを学習するのに最適な選択肢です。ヘッダー ファイル、関数、メイン関数のコンポーネントが含まれています。 「HelloWorld」を印刷できる単純な C プログラムには、標準入出力関数宣言を含むヘッダー ファイルが必要で、main 関数で printf 関数を使用して印刷します。 C プログラムは、GCC コンパイラーを使用してコンパイルして実行できます。基本をマスターしたら、データ型、関数、配列、ファイル処理などのトピックに進み、熟練した C プログラマーになることができます。

See all articles