Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HTTP通信を書きかえてみよう

 HTTP通信を書きかえてみよう

SECCON Beginners 2023 札幌

Ryusei Ishikawa

October 05, 2023
Tweet

More Decks by Ryusei Ishikawa

Other Decks in Technology

Transcript

  1. HTTP通信を
    書きかえてみよう
    xryuseix
    (@ryusei_ishika)
    SECCON Beginners 2023 札幌

    View full-size slide

  2. 自己紹介
    ID: xryuseix (Twitter: @ryusei_ishika)
    Webセキュリティと開発が好きです。
    ctf4b 2023では以下の問題を提供しました。
    ● shaXXX
    ● drmsaw
    ● phisher2
    2

    View full-size slide

  3. ローカルプロキシとは
    これってstring? number?
    3
    https://www.anet.co.jp/security/en
    gineer_blog/webburp_suite.html

    View full-size slide

  4. Burp Suiteのダウンロード
    4
    1. ここにアクセス
    a. https://portswigger.net/burp
    2. community editionをダウンロード
    3. メールアドレスを入力
    4. 自分のOSに合わせたバイナリを
    ダウンロード

    View full-size slide

  5. Burpの起動
    これってstring? number?
    5
    ↑2回くらいnextおす

    View full-size slide

  6. Burpの起動
    これってstring? number?
    6
    ↑おす
    ↗Proxyを選択する

    View full-size slide

  7. Burpの起動
    これってstring? number?
    7

    View full-size slide

  8. Burpの起動
    これってstring? number?
    8
    一旦interceptをOFFにしてください

    View full-size slide

  9. 問題ページ
    これってstring? number?
    9
    https://2023-sapporo.ctf4b.ryuse.dev/
    今回の講義では
    この後のCTFで使用す問題を先に解説するので、
    あとで皆さんに解いてもらいます

    View full-size slide

  10. 問題1: ダウンロードするHTMLを書き換える
    10
    問題文に書いてある通り、ダウンロードされる HTMLを書き換えればフラグが手に入ります

    View full-size slide

  11. 問題1: ダウンロードするHTMLを書き換える
    11
    開発者ツールなどで中身を見てみると、どこを書き換えればいいのかひと目でわかります

    View full-size slide

  12. 問題1: ダウンロードするHTMLを書き換える
    12
    レスポンスを書き換えていきます。まず intercept is onにします
    次にproxy settingsからresponses interception rulesのチェックを入れます

    View full-size slide

  13. 問題1: ダウンロードするHTMLを書き換える
    13
    この状態で先ほどの問題ページ (/chall1.html)をリロードします。

    View full-size slide

  14. 問題1: ダウンロードするHTMLを書き換える
    これってstring? number?
    14
    左上のforwardを何度か押すと、HTMLが表示されます。

    View full-size slide

  15. 問題1: ダウンロードするHTMLを書き換える
    15
    左側はエディタに貼っているので、書き換えます。

    View full-size slide

  16. 問題1: ダウンロードするHTMLを書き換える
    16
    書き換えた状態でforwardを押すと、フラグが手に入ります。

    View full-size slide

  17. 問題2: HTTPリクエストを書き換える
    17

    View full-size slide

  18. 問題2: HTTPリクエストを書き換える
    18
    残りの在庫が0個のflagを購入できれば良さそうです

    View full-size slide

  19. 問題2: HTTPリクエストを書き換える
    19
    Appleを1個で購入しようとすると、リクエスト内容はこのようになります。

    View full-size slide

  20. 問題2: HTTPリクエストを書き換える
    20
    なのでこれをflagにすると...

    View full-size slide

  21. 問題2: HTTPリクエストを書き換える
    21
    not enough flagと出力されました。在庫が 0なので仕方ないですね

    View full-size slide

  22. 問題2: HTTPリクエストを書き換える
    22
    ソースコードが読めるので、読んでみましょう。

    View full-size slide

  23. 問題2: HTTPリクエストを書き換える
    23
    フラグを-1個で購入すると、フラグが手に入ります。

    View full-size slide

  24. 問題3: Adminのパスワードを入手する
    24
    今回はburpのリクエスト内容をブルートフォースする機能を使用します

    View full-size slide

  25. 問題3: Adminのパスワードを入手する
    これってstring? number?
    25
    HTTP historyから先ほどのリクエストを選択します。

    View full-size slide

  26. 問題3: Adminのパスワードを入手する
    これってstring? number?
    26
    requestを右クリックでSend to Intruderを選択します。

    View full-size slide

  27. 問題3: Adminのパスワードを入手する
    これってstring? number?
    27
    上のタブからintruderを選択します。

    View full-size slide

  28. 問題3: Adminのパスワードを入手する
    これってstring? number?
    28
    パスワードの部分を選択して右上の Add $をクリックします。

    View full-size slide

  29. 問題3: Adminのパスワードを入手する
    これってstring? number?
    29
    PayloadsからNumbersを選択します。Payload settingsはこんな感じです。

    View full-size slide

  30. 問題3: Adminのパスワードを入手する
    これってstring? number?
    30
    実行すると一個だけレスポンスサイズがおかしい!この中身をみるとフラグが入っています。

    View full-size slide

  31. まとめ
    31
    ● HTTPリクエスト・レスポンスはローカルプロキシを使用して書き換えられる
    ● リクエストやレスポンスを書き換えることによって入力制限などを回避できる場合が
    ある
    ● Burp Suiteを使うとパラメータを変えながら様々なリクエストを作成することができる

    View full-size slide