ASP、PHP、.NETのHTTP-REFERERの偽造方法と偽造REFERERを防止するための方法
2022-01-02 06:32:05
HTTP-REFERER変数は信頼性が低くなってきており、偽造が可能なものである。
ここでは、そのごまかし方について説明します。
ASP/Visual Basicのコード
dim http
set http=server.createobject("MSXML2.XMLHTTP") '//MSXML2.serverXMLHTTP も動作する。
Http.open "GET",url,falseを実行します。
Http.setRequestHeader "Referer","http://www.dc9.cn/"。
Http.send()
PHP (curlがインストールされていることが条件)。
PHPコード
$ch = curl_init()。
curl_setopt ($ch, CURLOPT_URL, "http://www.dc9.cn/xxx.asp")。
curl_setopt ($ch, CURLOPT_REFERER, "http://www.dc9.cn/")。
curl_exec ($ch)を実行します。
curl_close ($ch)を実行します。
PHP (sockでcurlを使用しない場合)
PHPコード
$server = 'www.dc9.cn'。
$host = 'www.dc9.cn'。
$target = '/xxx.asp';
$referer = 'http://www.dc9.cn/'; // リファラー
$port = 80;
$fp = fsockopen($server, $port, $errno, $errstr, 30);
if (! $fp)
{
echo "$errstr ($errno)<br />\n";
}
さもなければ
{
$out = "GET $target HTTP/1.1 ###n";
$out . = "ホスト: $hostrăn";
$out . = "クッキー。ASPSESSIONIDSQTBQSDA=DFCAPKLBBFICDAFMHNKIGKEGrèsn";
$out . = "リファラー: $refererrkn";
$out . = "接続。ClosernApps";
fwrite($fp, $out);
while (!feof($fp))
{
echo fgets($fp, 128);
}
fclose($fp);
}
VB.NET/C#.NET
C#コード
Dim oXMLHttp As MSXML2.XMLHTTP30 = New MSXML2.XMLHTTP30()
または
MSXML2.XMLHTTP30 oXMLHttp = new MSXML2.XMLHTTP30();
oXMLHttp.open(...)。
oXMLHttp.setRequestHeader(...)。
oXMLHttp.send(...)。
ジャバスクリプト
JavaScriptコード
xmlHttp.setRequestHeader("Referer", "http://URL");//? おぉ~~~~~~~~~~~~~~~~~~~~~~~~~~い
JSはサポートされていません^_^。
sockはhttpヘッダを構築してデータを送信するのが原則です。他の言語やperlのようなものを使用することもできます。
クッキー認証やスレッド制御を利用したもの、ランダムなファイル名を生成してURLの書き換えを行うことができるものなどがあるようです。これらの方法の中には、良い結果を得られるものもあります。
魔法がかかっているようなものです。
ここでは、そのごまかし方について説明します。
ASP/Visual Basicのコード
dim http
set http=server.createobject("MSXML2.XMLHTTP") '//MSXML2.serverXMLHTTP も動作する。
Http.open "GET",url,falseを実行します。
Http.setRequestHeader "Referer","http://www.dc9.cn/"。
Http.send()
PHP (curlがインストールされていることが条件)。
PHPコード
$ch = curl_init()。
curl_setopt ($ch, CURLOPT_URL, "http://www.dc9.cn/xxx.asp")。
curl_setopt ($ch, CURLOPT_REFERER, "http://www.dc9.cn/")。
curl_exec ($ch)を実行します。
curl_close ($ch)を実行します。
PHP (sockでcurlを使用しない場合)
PHPコード
$server = 'www.dc9.cn'。
$host = 'www.dc9.cn'。
$target = '/xxx.asp';
$referer = 'http://www.dc9.cn/'; // リファラー
$port = 80;
$fp = fsockopen($server, $port, $errno, $errstr, 30);
if (! $fp)
{
echo "$errstr ($errno)<br />\n";
}
さもなければ
{
$out = "GET $target HTTP/1.1 ###n";
$out . = "ホスト: $hostrăn";
$out . = "クッキー。ASPSESSIONIDSQTBQSDA=DFCAPKLBBFICDAFMHNKIGKEGrèsn";
$out . = "リファラー: $refererrkn";
$out . = "接続。ClosernApps";
fwrite($fp, $out);
while (!feof($fp))
{
echo fgets($fp, 128);
}
fclose($fp);
}
VB.NET/C#.NET
C#コード
Dim oXMLHttp As MSXML2.XMLHTTP30 = New MSXML2.XMLHTTP30()
または
MSXML2.XMLHTTP30 oXMLHttp = new MSXML2.XMLHTTP30();
oXMLHttp.open(...)。
oXMLHttp.setRequestHeader(...)。
oXMLHttp.send(...)。
ジャバスクリプト
JavaScriptコード
xmlHttp.setRequestHeader("Referer", "http://URL");//? おぉ~~~~~~~~~~~~~~~~~~~~~~~~~~い
JSはサポートされていません^_^。
sockはhttpヘッダを構築してデータを送信するのが原則です。他の言語やperlのようなものを使用することもできます。
クッキー認証やスレッド制御を利用したもの、ランダムなファイル名を生成してURLの書き換えを行うことができるものなどがあるようです。これらの方法の中には、良い結果を得られるものもあります。
魔法がかかっているようなものです。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
他人のQQチャット記録を確認する方法を調べる方法 QQチャット記録を確認する詳細な方法?
-
QQは、履歴を削除する方法簡単な方法を復元するためにチャット
-
SA サンドボックスモードで xp_cmdshell と xplog70.dll をリストアせずにコマンドを実行する。
-
WebサイトにおけるInvisible Bomb eWebEditorのファイルアップロードの脆弱性に対するパッチについて
-
PHPSHELLがまた新しくなりました
-
Wish poolプラグインリモートコンテナの脆弱性
-
Wind Newsletter 4.0の未公開バグについて
-
SQLインジェクション(SQL Injection)の攻撃方法を学ぶ
-
サーブユーが管理者パスワードを入手する新手口(スピン)
-
Dでよく使われるインジェクションコマンドをいくつかまとめてみました。