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
24
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
動画配信サービスのフロントエンド実装に学ぶ設計原則
yud0uhu
1
210
非デザイナーのフロントエンドエンジニアがOOUIを考える
yud0uhu
9
4.8k
2023年の ゼロランタイムCSS in JS⚡️ を考える
yud0uhu
5
4.5k
Vue3/Electronで自作したマークダウンエディタをVue3/Tauriにリプレイスした話
yud0uhu
2
2.2k
入社半年を迎える新米エンジニアがカンファレンス・勉強会から得た学び
yud0uhu
0
870
Next.js×Prisma×GraphQL×Supabase +WASMでブログを自作した話
yud0uhu
0
990
Rustでつくって学ぶProtocol Buffers
yud0uhu
1
49
ブログを自作した話
yud0uhu
1
16
Wasmで動くRust製マークダウンパーサーを自作した話
yud0uhu
1
23
Other Decks in Programming
See All in Programming
[Do iOS '24] Ship your app on a Friday...and enjoy your weekend!
polpielladev
0
110
シェーダーで魅せるMapLibreの動的ラスタータイル
satoshi7190
1
480
subpath importsで始めるモック生活
10tera
0
310
受け取る人から提供する人になるということ
little_rubyist
0
250
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
1
300
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
1.3k
Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan
ivargrimstad
0
960
Make Impossible States Impossibleを 意識してReactのPropsを設計しよう
ikumatadokoro
0
230
Contemporary Test Cases
maaretp
0
140
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
What’s New in Compose Multiplatform - A Live Tour (droidcon London 2024)
zsmb
1
480
as(型アサーション)を書く前にできること
marokanatani
10
2.7k
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Side Projects
sachag
452
42k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Git: the NoSQL Database
bkeepers
PRO
427
64k
4 Signs Your Business is Dying
shpigford
180
21k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Ruby is Unlike a Banana
tanoku
97
11k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
How GitHub (no longer) Works
holman
310
140k
Building Applications with DynamoDB
mza
90
6.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
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月頃にビギナーズ向けオンラインイベントをやるみたいです
~資料作成にあたり~ • はじめて学ぶバイナリ解析 を参考にさせていただきました。 • めちゃめちゃわかりやすい!!