ctf web個人まとめ


CTF web個人まとめ
個人の参考に供する
0からCTFに触れて、入門しましたが、自分で問題を作るのを便利にするために、今webタイプの問題の解題の構想を記録します.
ツール
  • 中国包丁
  • burpsuite
  • Googleブラウザまたは火狐ブラウザ
  • postman(なんかこれでさっぱり)
  • sqlmap
  • dirb

  • 問題を解く構想.
    一、普通の考え方
  • タイトルを取得すると、まずソースコードを表示し、jsまたはcssファイルにいくつかの情報が表示されているかどうかに特に注意します.
  • metaラベルを表示します.typeがauthorのように、このラベルは作者を表し、後でこれらの情報
  • が使用される可能性があります.
  • ルートディレクトリの下にrobotsがあるかどうかを確認します.txt、どんなウェブサイトを提案して、問題を始める時すべて先にdirbの中で経路の爆破を行います
  • 問題を審査することに注意して、テーマの中で往々にしていくつかの肝心な情報を明らかにして、例えば:ウェブサイトのバックアップ、など、それでは経路によって関連するwww.zipあるいはxxxを検索することを提案します.bak等のバックアップファイル
  • ユーザ認証偽造、ネットワークパケットの表示に注意、クッキーの変更、またはjwtの爆破により認証
  • を偽造することができる.
  • ip偽造は、通常、ページにローカルまたは指定ipアクセスを必要とするテーマに用いられ、X-Forwarded-ForX-Client-IPX-Real-IPCDN-Src-IP headヘッダを用いて、サービス側がこの2つのパラメータを利用してユーザー検証
  • を行うことを前提として、クライアントにアクセスするipを偽造する.
  • gitが流出し、ウェブサイトの下に存在する.gitはアクセス可能であり、GitHackツールを使用してコードを復元し、脆弱性
  • を表示する.
    二、考え方を注入する
  • プロジェクトに提出可能な入力ボックスがあるかどうか、後者のページパラメータはid=1であるなど、sql注入を試してみることをお勧めします.sql注入には多くの分類があり、簡単にsqlmapをベースプローブとして使用することができます.
  • sql注入は、ファイルに含まれるパラメータである場合があるため、エラーのパラメータを先に使用してページエラー判定を行う.
  • は、'または"を使用してsqlプローブを行い、--+または#を使用します(urlではhashを表すため、%23に変換することに注意してください).
  • は、and 1=2and 1='1、または他の複雑なpayload
  • のようないくつかの固定payloadを使用して試みる.
  • は、extractvalueエラー関数を使用して注入する.例えば、
  • ?id=1" and extractvalue('~', concat(',', (select f4ag from f1ag limit 2,1)))%23
    
  • 時間関数を用いて判断する、例えば:
  • select 1,IF(1=1, sleep(3), 'goodbye'),3
    

    時間ブラインドができることを確認すれば、スクリプトを作成して爆破することができます
  • 多くの場合、サービス側は文字列フィルタリングを行うことが多い.この場合、一定の情報に基づいてサービス側が存在する可能性があるフィルタリング方法を推測し、使用可能な注入方法をフィルタリングしなければならない.存在する可能性がある場合は、文字列が空に置き換えられ、キーワードが判断されると、キーワードはこのように書くことができる.selselectect sElEct
  • 超ロング文字カット、例えば:テーマはadminアカウントでログインする必要がありますが、システムにはすでにadminアカウントが存在します.このとき、admin *n 1のようなアカウントを登録し、mysqlのカットを利用して、adminのアカウント
  • を登録しました.
  • は16進数注入を使用し、MySQLでは16進数を文字列に自動的に解析します.また、16進数はis_を迂回するためにも使用できます.numeric.

  • 三、ファイルに脆弱性が含まれている
  • ファイルに脆弱性が含まれている場合は、ファイルアップロード脆弱性と同時に存在する場合があります.アップロード時にファイル情報を偽装し、馬をアップロードし、ファイルに脆弱性が含まれている場合はwebshellを実行し、包丁ツールを使用することができます.
  • ファイルには脆弱性が含まれているため、ページのソースコードを取得することができますが、phpファイルはサーバによって解析されるので、phpの擬似プロトコルが使用されます.たとえば、php://filter/read=convert.base64-encode/resource=xxxx.phpで、擬似プロトコルを使用してソースコードをbase 64に変換して出力し、base 64でソースコードに復号します.
  • もちろん、ファイルに脆弱性が含まれている場合も文字列フィルタリングを設定することが多いが、%2570を使用してpを置き換えるなど、利用可能な関数脆弱性がある.コードで文字列にphpが含まれているかどうかを判断する場合は、この方法を使用することができるが、ブラウザでは役に立たないようで、bash環境でcurlテストを使用することができる.
  • アップロードしたファイルを直接上書きできます.htaccessファイルならhtaccessでは、phpファイルで一致する画像を解析すると宣言されています.
  • AddType   application/x-httpd-php     .jpg
    
  • file://プロトコルは、file://localhost/etc/hostsのフィルタ
  • を迂回するためにfile:///でサーバファイルにアクセスすることをサポートする.
    四、表示ソースタイプ
  • これはあなたの論理的な思考を試しています.一般的には、現在のファイルのソースコードを出して、脆弱性を探してあげましょう.その中には、ファイルに含まれる脆弱性も含まれています.
  • が利用できるphp関数のいくつかの特性、例えば文字列の比較をする時、例えば:0==$_GET['a']、まず$_GETをフィルタリングして、あなたに数字を提出することができなくて、しかしphpのいくつかの特性によって、あなたは文字列を提出する時、判断の時に強く数字に転換されます.
  • md 5利用は、2つの異なる入力値のmd 5値が等しいか否かを判断するのが一般的であるが、この場合phpの特性を利用するには、0eの先頭に科学カウント法を表し、2つのMD 5値が0eの先頭の文字列をmd 5比較させ、私も関連ブログを以下のように所蔵した.https://blog.csdn.net/qq449736038/article/details/80843914
  • シリアル化脆弱性、シリアル化文字列を修正することによって逆シリアル化脆弱性
  • を迂回する
    五、リバウンドシェル
  • 最近の旗取り試合では、いくつかの問題があり、掘り起こしを通じて、木馬のページを見つけたが、システムは多くの実行関数を無効にしたが、PCNTLという関数を開放し、この関数を利用してスクリプト実行を行い、実行したリバウンドshellを利用してサーバーshell実行
  • を行うことができる.
    五、xssとcsrf
    専門のロボットがシナリオを走ってあなたのpayloadを出発しますが、出会ったことがありません.
    六、混合型
    このようなテーマは以上のタイプと組み合わせて難易度の高いflagマイニングを行います
    PS:私は不定期に整理して更新します