pay2pwnのアシスト内容クレジットカード番号を入力すると、商品を購入できる。商品はcheapという無条件に購入できるものと、flagという通常は購入できないものの2種類がある。この場合は、cheapでいろいろ攻撃してみてあたりを付けるのが正攻法。リクエストを飛ばすと、URLクエリにdataというパラメータがあることが分かる。未購入の状態での2回分のアクセスのURLは次の通り。http://78.46.224.78:5001/pay?data=5e4ec20070a567e0f3d9ab21d10633a7e5261df9e28804963b5b0554edda4f8828df361f896eb3c3706cda0474915040http://78.46.224.78:5001/pay?data=5e4ec20070a567e0f3d9ab21d10633a7a39ae7d3a1b9fd303b5b0554edda4f8828df361f896eb3c3706cda0474915040タイミングによらず、未購入であれば同じdataが入りそうだ。次に2種類のクレジットカード番号(これはダミー)でcheapを買ってみたときのURLを調べた。4024007103302005http://78.46.224.78:5000/payment/callback?data=5765679f0870f4309b1a3c83588024d7c146a4104cf9d2c89559d4e580fe28ef28df361f896eb3c3706cda0474915040注意深く見ると、次のことが分かる。dataはhexエンコードされたデータ。暗号文の可能性が高い購入できたときのdataで比較すると、dataの中央部だけ一致しない。flippingという攻撃方法により、statusを改竄するように提案した。あとはcrypto担当の新人くんが30分くらいで解いてくれた。優秀(まだCTF初めて1ヶ月位なんだぜ?)。(1)はてなブログをはじめよう!katcさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。