SlideShare a Scribd company logo
1 of 25
Pwnable
Pwn
侵入して、支配する
Pwnで有効なツール ➡ GDB
変数の中身を覗いたり、
書き換えたり...
そういうことが出来ます
GDBの動作概要
・b main と入力
➡breakpoint 1at xxx
・run と入力
➡starting program xxx
➡breakpoint 1 , xxx in main()
・layout regs と入力
➡画面がリッチになる
・ni と入力
➡アセンブラの命令が1命令実行された
■gdbから直接起動
①ソースファイルを、デバッグ可能な方式で
コンパイルする
gcc –g3 test.c
→a.outが生成
※-g3とするとマクロの展開が可能となります。
②生成した実行可能ファイルをgdbコマンドから実行
gdb a.out
→以後、gdbよりコマンドの入力を求められる
※この状態では、プログラムは実行されません。
③実行前にブレークポイントを設定
# test.cの3行目にブレークを張る
b test.c:3
# 関数main先頭にブレークを張る
b main
ブレークポイントで、プログラムは一時停止
します。
ブレークポイントでの停止後、プログラマは
通常のデバッグ作業同様に実行環境(メモリ、
レジスタ、ログ、ファイルなど)を観察し、
プログラムが期待通りに機能しているかどう
かを判断します。
ブレークポイント
④実行
run
※引数つきで実行したい場合は、
run aaa bbb ccc と実行。
■既に稼動しているプログラムをデバッグ
①デバッグしたいプログラムのプロセスID(PID)を確認
ps -ef | grep a.out
※一番左端のフィールドに出てくる数字がPID
②attachする
gdb #引数無しで実行
attach 12345(↑で確認したPID)
attach
ソフトウェア開発において、
デバッガなどが実行中のプログラムを
監視・制御の対象にすることを
「アタッチする」という。
以後、gdbを使って
ブレークポイントを
貼ったり変数を覗いた
り出来ます。
プロセスを変えたいとき
はdetachしてから別の
プロセスをアタッチでき
ます。
■コマンド集 [ブレーク関連_1]
・b 関数名
➡関数funcにブレークポイントを貼る
・b ファイル名:行数
➡test.cのline行目にブレークポイントを貼る
・w 変数名
➡変数にウォッチポイントを設定
ウォッチポイント
「監視している変数を操
作したら停止」という流
れになります。
■コマンド集 [ブレーク関連_2]
・i b
➡ブレークポイント一覧を表示
・d no
➡番号に対応するブレークポイントを削除
■コマンド [実行関連_1]
・n(エヌ)
➡ステップ実行(1行ずつ実行/関数は飛ばす)
・s(エス)
➡ステップ実行(1行ずつ実行/関数の中に入る)
・c(シー)
➡ 次のブレークポイントまで処理を実行
■コマンド[実行関連_2]
・ f(エフ)
➡現在の関数を抜けるまで処理を実行
・ u(ユー)
➡現在のループを抜けるまで処理を実行
・ret -1
➡現在の関数を戻り値-1として強制的に抜ける
※以降の処理は実行されない
■コマンド集 [参照]
• p 変数名
➡変数の値を見る
(構造体のメンバはa.bで要素を見れる。
ポインタの場合は*fpなどで中身を見れる)
・bt バックトレース
➡(現在の関数が呼び出されるまでの経路)を表示
・ l (エル)
➡ソースコードを表示
・info macro マクロ名
➡マクロの定義を確認
[値の書き換え]
p 変数名=-1
➡変数の値を書き換える

More Related Content

Similar to 第2回セキュリティ勉強会 GDBコマンド

ソフトウェア工学2023 10 デバッグ
ソフトウェア工学2023 10 デバッグソフトウェア工学2023 10 デバッグ
ソフトウェア工学2023 10 デバッグToru Tamaki
 
PF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGPF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGdaye001
 
GCをみればRTSが見えてくる、かも。。。
GCをみればRTSが見えてくる、かも。。。GCをみればRTSが見えてくる、かも。。。
GCをみればRTSが見えてくる、かも。。。dec9ue
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggugkimukou_26 Kimukou
 
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうGo mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうTakuya Ueda
 
Spring in-summer-gradle-hands on-withanswers
Spring in-summer-gradle-hands on-withanswersSpring in-summer-gradle-hands on-withanswers
Spring in-summer-gradle-hands on-withanswersTakuma Watabiki
 
Hacking Ruby with Python
Hacking Ruby with PythonHacking Ruby with Python
Hacking Ruby with PythonTaisuke Yamada
 
Programming camp 2010 debug hacks
Programming camp 2010 debug hacksProgramming camp 2010 debug hacks
Programming camp 2010 debug hacksHiro Yoshioka
 
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Hiro Yoshioka
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜 虎の穴 開発室
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門Muyuu Fujita
 
“debug.gem”の 利用体験・開発効率の向上
“debug.gem”の 利用体験・開発効率の向上“debug.gem”の 利用体験・開発効率の向上
“debug.gem”の 利用体験・開発効率の向上Naoto Ono
 
“debug.gem”の 利用体験・開発効率の向上.pdf
“debug.gem”の 利用体験・開発効率の向上.pdf“debug.gem”の 利用体験・開発効率の向上.pdf
“debug.gem”の 利用体験・開発効率の向上.pdfNaoto Ono
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -Yukihiko SAWANOBORI
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradlekimukou_26 Kimukou
 
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Takuya Ueda
 
mruby を C# に 組み込んでみる
mruby を C# に 組み込んでみるmruby を C# に 組み込んでみる
mruby を C# に 組み込んでみるRyosuke Akiyama
 

Similar to 第2回セキュリティ勉強会 GDBコマンド (20)

ソフトウェア工学2023 10 デバッグ
ソフトウェア工学2023 10 デバッグソフトウェア工学2023 10 デバッグ
ソフトウェア工学2023 10 デバッグ
 
PF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGPF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAG
 
GCをみればRTSが見えてくる、かも。。。
GCをみればRTSが見えてくる、かも。。。GCをみればRTSが見えてくる、かも。。。
GCをみればRTSが見えてくる、かも。。。
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
 
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうGo mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
 
Spring in-summer-gradle-hands on-withanswers
Spring in-summer-gradle-hands on-withanswersSpring in-summer-gradle-hands on-withanswers
Spring in-summer-gradle-hands on-withanswers
 
Hacking Ruby with Python
Hacking Ruby with PythonHacking Ruby with Python
Hacking Ruby with Python
 
Programming camp 2010 debug hacks
Programming camp 2010 debug hacksProgramming camp 2010 debug hacks
Programming camp 2010 debug hacks
 
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011
 
Grailsのススメ(仮)
Grailsのススメ(仮)Grailsのススメ(仮)
Grailsのススメ(仮)
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門
 
“debug.gem”の 利用体験・開発効率の向上
“debug.gem”の 利用体験・開発効率の向上“debug.gem”の 利用体験・開発効率の向上
“debug.gem”の 利用体験・開発効率の向上
 
“debug.gem”の 利用体験・開発効率の向上.pdf
“debug.gem”の 利用体験・開発効率の向上.pdf“debug.gem”の 利用体験・開発効率の向上.pdf
“debug.gem”の 利用体験・開発効率の向上.pdf
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
 
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
 
mruby を C# に 組み込んでみる
mruby を C# に 組み込んでみるmruby を C# に 組み込んでみる
mruby を C# に 組み込んでみる
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
20130819 jjugnslt
20130819 jjugnslt20130819 jjugnslt
20130819 jjugnslt
 

第2回セキュリティ勉強会 GDBコマンド