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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yud0uhu
July 24, 2021
Programming
0
39
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
320
早朝の渋谷の青さ、あるいは溺れた人を助ける為に飛び込んだ海の向こう側に見る、自己覚知と自己開示の尊さ
yud0uhu
1
790
動画配信サービスのフロントエンド実装に学ぶ設計原則
yud0uhu
1
350
非デザイナーのフロントエンドエンジニアがOOUIを考える
yud0uhu
9
5.8k
2023年の ゼロランタイムCSS in JS⚡️ を考える
yud0uhu
5
5k
Vue3/Electronで自作したマークダウンエディタをVue3/Tauriにリプレイスした話
yud0uhu
2
3k
入社半年を迎える新米エンジニアがカンファレンス・勉強会から得た学び
yud0uhu
0
1k
Next.js×Prisma×GraphQL×Supabase +WASMでブログを自作した話
yud0uhu
0
1.3k
Rustでつくって学ぶProtocol Buffers
yud0uhu
1
250
Other Decks in Programming
See All in Programming
AI巻き込み型コードレビューのススメ
nealle
2
1.4k
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
1
130
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
110
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
750
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
620
Oxlintはいいぞ
yug1224
5
1.4k
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
500
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
CSC307 Lecture 09
javiergs
PRO
1
840
高速開発のためのコード整理術
sutetotanuki
1
410
CSC307 Lecture 10
javiergs
PRO
1
660
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Everyday Curiosity
cassininazir
0
130
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
120
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
79
Mind Mapping
helmedeiros
PRO
0
90
Making Projects Easy
brettharned
120
6.6k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
110
Designing Experiences People Love
moore
144
24k
Producing Creativity
orderedlist
PRO
348
40k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
170
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
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月頃にビギナーズ向けオンラインイベントをやるみたいです
~資料作成にあたり~ • はじめて学ぶバイナリ解析 を参考にさせていただきました。 • めちゃめちゃわかりやすい!!