Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pwn超超入門
Search
yud0uhu
July 24, 2021
Programming
0
35
Pwn超超入門
【参考書籍】
はじめて学ぶバイナリ入門
https://nextpublishing.jp/book/11353.html
cistLT by June 24, 2021
yud0uhu
July 24, 2021
Tweet
Share
More Decks by yud0uhu
See All by yud0uhu
Webブラウザ向け動画配信プレイヤーの 大規模リプレイスから得た知見と学び
yud0uhu
0
260
早朝の渋谷の青さ、あるいは溺れた人を助ける為に飛び込んだ海の向こう側に見る、自己覚知と自己開示の尊さ
yud0uhu
1
660
動画配信サービスのフロントエンド実装に学ぶ設計原則
yud0uhu
1
320
非デザイナーのフロントエンドエンジニアがOOUIを考える
yud0uhu
9
5.6k
2023年の ゼロランタイムCSS in JS⚡️ を考える
yud0uhu
5
4.9k
Vue3/Electronで自作したマークダウンエディタをVue3/Tauriにリプレイスした話
yud0uhu
2
2.8k
入社半年を迎える新米エンジニアがカンファレンス・勉強会から得た学び
yud0uhu
0
1k
Next.js×Prisma×GraphQL×Supabase +WASMでブログを自作した話
yud0uhu
0
1.2k
Rustでつくって学ぶProtocol Buffers
yud0uhu
1
190
Other Decks in Programming
See All in Programming
LLMとPlaywright/reg-suitを活用した jQueryリファクタリングの実際
kinocoboy2
4
670
そのpreloadは必要?見過ごされたpreloadが技術的負債として爆発した日
mugitti9
2
3k
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
1.9k
あなたの知らない「動画広告」の世界 - iOSDC Japan 2025
ukitaka
0
390
いま中途半端なSwift 6対応をするより、Default ActorやApproachable Concurrencyを有効にしてからでいいんじゃない?
yimajo
2
340
dynamic!
moro
9
6.6k
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
400
アメ車でサンノゼを走ってきたよ!
s_shimotori
0
140
Conquering Massive Traffic Spikes in Ruby Applications with Pitchfork
riseshia
0
150
Advance Your Career with Open Source
ivargrimstad
0
340
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
140
Back to the Future: Let me tell you about the ACP protocol
terhechte
0
130
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
246
12k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Docker and Python
trallard
46
3.6k
Become a Pro
speakerdeck
PRO
29
5.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Fireside Chat
paigeccino
40
3.7k
Statistics for Hackers
jakevdp
799
220k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
2.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
A better future with KSS
kneath
239
17k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Transcript
PWNABLE 超超入門 情報システム工学科3年 0yu @yud0uhu
自己紹介 •プロメン・cistLT サークル・写真部に所属 •主に Web が好き。フロントエンドは Vue.js でよく遊んでます •サーバーサイド Kotlin
が最近熱い •コープさっぽろで半年ほどエンジニアインターンをやっています。 •トドックサイトすごいのでぜひ使ってみてください!Webカタログをモバイルで横スク表示 にさせるやつとかやりました
ところで皆さん、CTFってご存じですか? なにそれ、っていう方向けに ⇒ざっくりいうとハッキングコンテスト • Capure The Flagの略。隠されているFlag(答え)を見つけ出し、時間内に獲 得した合計点数を競うもの 今回はその中の分野の一つ、Pwnable(以後Pwn)についての LT
をしたいと思 います。
PWNって? • 語源は「own」 • 「支配する」等のニュアンスから転じたもの • CTFではバイナリを解析したりして、プログラムの脆弱性を突くジャンル PWNの超入門 大和セキュリティ神戸 (https://www.slideshare.net/ssuserbcacc5/pwn-20180325
)より
BOF攻撃
バッファオーバーフローの脆弱性 プログラムが想定するメモリ領域を超えるような入力をハッカーが 意図的に行い、バッファをあふれさせる古典的な脆弱性 Pwn系の問題における最も基本的な解法の一つ
スタック領域について プログラム部 スタック部
スタック領域について スタック部 プログラム部 str2 Push EBP(下位) ESP(上位)
スタック領域について プログラム部 スタック部 overflowme[16] str2 Push EBP(下位) ESP(上位)
バッファオーバーフローを起こしてみる スタック部 プログラム部 overflowme[16] str2 Buffer Overflow EBP(下位) ESP(上位)
バッファオーバーフローを起こしてみる スタック部 プログラム部 Overflowme[16] str2 EB P ES P Buffer
Overflow 適当な16文字で overflowmeのスタック領 域を塗りつぶし、str2の beefをfishで上書き
バッファオーバーフローを起こしてみる プログラム部 Overflowme[16] str2 Segmen tation fault EBP(下位) ESP(上位)
特定のスタック領域を狙って攻撃したい ↓ オフセットを確認する • Gdb-pedaというデバッカを用いてプログラムのうごきを追ってい きます • Str2がoverflowmeの16バイト前に存在していることを確かめるに は?
オフセットを確認 する •$ gcc –m32 –fno-stack-protector hogehoge.c •gdb-peda$ gdb a.out
•gdb-peda $ b vuln // vuln にブレイクポイントを設定 •gdb-peda $ run • n で一行ずつステップを実 行していく
• ASCIIコード変換表を見 ると 0x 66 65 65 62 f e
e b • ebpというレジスタ (=0xffffxfd8)の指すアドレ スから、16進数で0xdだ け減らしたところに、 0x66656562をコピーす るという指示を出している オフセットを確認 する
オフセットを確認する • Call 0x56555440 <_isoc99_scanf@plt>まで ステップ実行するとscanf関 数が呼び出される ⇒22文字入力してみる
gdb-peda$ stack 12 を走らせてみる 0xffffcfccを始点に20文字 積まれていく様子がわかる ⇒str2が格納されている0xffffcfd8に、fishが上書き されてしまうことが確認できた! 0xffffcfb8 ←変数str2
0xffffcfbc 0xffffcfc0 0xffffcfc4 0xffffcfc8 0xffffcfcc←標準入力の始点
初心者向けCTF CTF 挑戦してみたいかも、という方は、以下の常設 CTF がおすすめです。 • [picoCTF](https://play.picoctf.org/practice?originalEvent=1&page=1) • 海外の常設CTF。youtubeや個人の方のブログに解法(writeup)が数多くアッ プされているため、とっつきやすそう。
• [KsnctSSf](https://ksnctf.sweetduet.info/problem/4) • 運営のkusanoさんの書かれた本 • https://www.amazon.co.jp/dp/B08Q3JKBR3/ref=dp-kindle-redirect?_enco ding=UTF8&btkr=1 • 演習環境がDockerコンテナで用意されている
勉強会など • MH4Y • 一昨年は道警本部で開催されました。数人一組でチームを組み、ク ラッカーから Web サイトを防衛する演習を競技形式で行いました。 • SC4Y
• 定期開催されているハンズオン講習会。CTF形式でセキュリティを学 べておすすめです! • 20#1の参加レポート(当時書いたやつ)。 • 21#2が明日開催です(OSCの中でやるみたいです)
勉強会など • セキュリティミニキャンプ • 昨年はCTFのPwn問題とWeb問題の二ジャンルの形式でセキュリティ について学ぶ講座が開講 • 急にセキュリティキャンプはハードルが高いなぁ、という方にもおすす めです! •
SECCON Beginners • SECCON CTFの初心者向け勉強会 • 8-9月頃にビギナーズ向けオンラインイベントをやるみたいです
~資料作成にあたり~ • はじめて学ぶバイナリ解析 を参考にさせていただきました。 • めちゃめちゃわかりやすい!!