Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Nobutada Matsubara
PDF, PPTX
707 views
Ruby4Ctf
origin http://www.slideshare.net/shiracamus/ctfpython
Technology
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 47
2
/ 47
3
/ 47
4
/ 47
5
/ 47
6
/ 47
7
/ 47
8
/ 47
9
/ 47
10
/ 47
11
/ 47
12
/ 47
13
/ 47
14
/ 47
15
/ 47
16
/ 47
17
/ 47
18
/ 47
19
/ 47
20
/ 47
21
/ 47
22
/ 47
23
/ 47
24
/ 47
25
/ 47
26
/ 47
27
/ 47
28
/ 47
29
/ 47
30
/ 47
31
/ 47
32
/ 47
33
/ 47
34
/ 47
35
/ 47
36
/ 47
37
/ 47
38
/ 47
39
/ 47
40
/ 47
41
/ 47
42
/ 47
43
/ 47
44
/ 47
45
/ 47
46
/ 47
47
/ 47
More Related Content
PDF
出張 CTF for ビギナーズ 2015 幕張 in セキュリティ・キャンプ 成果報告
by
Ikumi Shimizu
PDF
Ctfのためのpython入門
by
shiracamus
PPTX
20180728 halide-study
by
Fixstars Corporation
PDF
TVM の紹介
by
Masahiro Masuda
PDF
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
by
直久 住川
PDF
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
by
MITSUNARI Shigeo
PDF
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
by
MITSUNARI Shigeo
PDF
条件分岐とcmovとmaxps
by
MITSUNARI Shigeo
出張 CTF for ビギナーズ 2015 幕張 in セキュリティ・キャンプ 成果報告
by
Ikumi Shimizu
Ctfのためのpython入門
by
shiracamus
20180728 halide-study
by
Fixstars Corporation
TVM の紹介
by
Masahiro Masuda
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
by
直久 住川
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
by
MITSUNARI Shigeo
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
by
MITSUNARI Shigeo
条件分岐とcmovとmaxps
by
MITSUNARI Shigeo
What's hot
PDF
高速な倍精度指数関数expの実装
by
MITSUNARI Shigeo
PPTX
Prosym2012
by
MITSUNARI Shigeo
PDF
LLVM最適化のこつ
by
MITSUNARI Shigeo
PDF
From IA-32 to avx-512
by
MITSUNARI Shigeo
PDF
フラグを愛でる
by
MITSUNARI Shigeo
PPTX
WebRTC getStats - WebRTC Meetup Tokyo 5 LT
by
mganeko
PDF
Haswellサーベイと有限体クラスの紹介
by
MITSUNARI Shigeo
PDF
Effective Modern C++ 読書会 Item 35
by
Keisuke Fukuda
PDF
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
by
MITSUNARI Shigeo
PDF
新しい並列for構文のご提案
by
yohhoy
PDF
Boost Tour 1.48.0 diff
by
Akira Takahashi
PPTX
高速な暗号実装のためにしてきたこと
by
MITSUNARI Shigeo
KEY
関東GPGPU勉強会 LLVM meets GPU
by
Takuro Iizuka
PDF
llvm入門
by
MITSUNARI Shigeo
PDF
WASM(WebAssembly)入門 ペアリング演算やってみた
by
MITSUNARI Shigeo
PDF
SSE4.2の文字列処理命令の紹介
by
MITSUNARI Shigeo
PDF
Wavelet matrix implementation
by
MITSUNARI Shigeo
PDF
optimal Ate pairing
by
MITSUNARI Shigeo
PPTX
Fftw誰得ガイド
by
chunjp
高速な倍精度指数関数expの実装
by
MITSUNARI Shigeo
Prosym2012
by
MITSUNARI Shigeo
LLVM最適化のこつ
by
MITSUNARI Shigeo
From IA-32 to avx-512
by
MITSUNARI Shigeo
フラグを愛でる
by
MITSUNARI Shigeo
WebRTC getStats - WebRTC Meetup Tokyo 5 LT
by
mganeko
Haswellサーベイと有限体クラスの紹介
by
MITSUNARI Shigeo
Effective Modern C++ 読書会 Item 35
by
Keisuke Fukuda
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
by
MITSUNARI Shigeo
新しい並列for構文のご提案
by
yohhoy
Boost Tour 1.48.0 diff
by
Akira Takahashi
高速な暗号実装のためにしてきたこと
by
MITSUNARI Shigeo
関東GPGPU勉強会 LLVM meets GPU
by
Takuro Iizuka
llvm入門
by
MITSUNARI Shigeo
WASM(WebAssembly)入門 ペアリング演算やってみた
by
MITSUNARI Shigeo
SSE4.2の文字列処理命令の紹介
by
MITSUNARI Shigeo
Wavelet matrix implementation
by
MITSUNARI Shigeo
optimal Ate pairing
by
MITSUNARI Shigeo
Fftw誰得ガイド
by
chunjp
Viewers also liked
PDF
SKIコンビネーターによる処理系の作成
by
Nobutada Matsubara
PDF
バイナリアンを目指して For a binaryen
by
Eyes, JAPAN
PPTX
初心者が Python で戸惑ったところ
by
Emma Haruka Iwao
PDF
CTF for ビギナーズ バイナリ講習資料
by
SECCON Beginners
PDF
Python入門
by
Shohei Okada
PDF
CTF for ビギナーズ ネットワーク講習資料
by
SECCON Beginners
PDF
Pythonで機械学習入門以前
by
Kimikazu Kato
PDF
Lisper はじめました(大嘘)
by
Nobutada Matsubara
PDF
160924 Deep Learning Tuningathon
by
Takanori Ogata
PDF
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
by
洋資 堅田
PDF
Pythonを使った機械学習の学習
by
Kimikazu Kato
PDF
C++でできる!OS自作入門
by
uchan_nos
PDF
ハッキング実演
by
Ken Ogura
PDF
CTF超入門 (for 第12回セキュリティさくら)
by
kikuchan98
PDF
Python入門 : 4日間コース社内トレーニング
by
Yuichi Ito
SKIコンビネーターによる処理系の作成
by
Nobutada Matsubara
バイナリアンを目指して For a binaryen
by
Eyes, JAPAN
初心者が Python で戸惑ったところ
by
Emma Haruka Iwao
CTF for ビギナーズ バイナリ講習資料
by
SECCON Beginners
Python入門
by
Shohei Okada
CTF for ビギナーズ ネットワーク講習資料
by
SECCON Beginners
Pythonで機械学習入門以前
by
Kimikazu Kato
Lisper はじめました(大嘘)
by
Nobutada Matsubara
160924 Deep Learning Tuningathon
by
Takanori Ogata
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
by
洋資 堅田
Pythonを使った機械学習の学習
by
Kimikazu Kato
C++でできる!OS自作入門
by
uchan_nos
ハッキング実演
by
Ken Ogura
CTF超入門 (for 第12回セキュリティさくら)
by
kikuchan98
Python入門 : 4日間コース社内トレーニング
by
Yuichi Ito
Similar to Ruby4Ctf
PDF
Reading Self-descriptive FizzBuzz
by
Hiroyuki Morita
PPTX
某Ctf にて writeup
by
Satoshi Mimura
PDF
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
by
mametter
PDF
拡張ライブラリ作成による高速化
by
Kazunori Jo
PDF
人工無脳バトル 1st STEP 回答と解説
by
JustSystems Corporation
PDF
katagaitai CTF勉強会 #5 Crypto
by
trmr
PPTX
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
by
Fujio Kojima
PPTX
Capture the flag write up q13,q20,q21 for ss
by
Masahiro Fukuda
PDF
Rubysapporo Stringsearch
by
Akio Ishida
PDF
Hacking demonstration 2018
by
Yasutaka Hiraki
PDF
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
by
Kazkuki Oakamoto
PDF
Python勉強会2-数値と文字列
by
理 小林
PDF
NumPyが物足りない人へのCython入門
by
Shiqiao Du
PDF
CRC-32
by
7shi
PDF
Pythonで始めるDropboxAPI
by
Daisuke Igarashi
PDF
Ruby紹介3(pdf)
by
Gohryuh
PDF
2011年11月11日
by
nukaemon
PDF
Cython intro prelerease
by
Shiqiao Du
PPTX
MISRA-C2012とISO/IEC 9899:2011 at OSCNagoya2013
by
Kiyoshi Ogawa
PDF
Levenshtein Automata
by
Masahiro Honma
Reading Self-descriptive FizzBuzz
by
Hiroyuki Morita
某Ctf にて writeup
by
Satoshi Mimura
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
by
mametter
拡張ライブラリ作成による高速化
by
Kazunori Jo
人工無脳バトル 1st STEP 回答と解説
by
JustSystems Corporation
katagaitai CTF勉強会 #5 Crypto
by
trmr
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
by
Fujio Kojima
Capture the flag write up q13,q20,q21 for ss
by
Masahiro Fukuda
Rubysapporo Stringsearch
by
Akio Ishida
Hacking demonstration 2018
by
Yasutaka Hiraki
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
by
Kazkuki Oakamoto
Python勉強会2-数値と文字列
by
理 小林
NumPyが物足りない人へのCython入門
by
Shiqiao Du
CRC-32
by
7shi
Pythonで始めるDropboxAPI
by
Daisuke Igarashi
Ruby紹介3(pdf)
by
Gohryuh
2011年11月11日
by
nukaemon
Cython intro prelerease
by
Shiqiao Du
MISRA-C2012とISO/IEC 9899:2011 at OSCNagoya2013
by
Kiyoshi Ogawa
Levenshtein Automata
by
Masahiro Honma
More from Nobutada Matsubara
PDF
Haskell で作る競技型イベントの裏側
by
Nobutada Matsubara
PDF
Marp Next Theme: Colors
by
Nobutada Matsubara
PDF
Marp Next Tips !
by
Nobutada Matsubara
PDF
Haskell で CLI
by
Nobutada Matsubara
PDF
貧者のための「cron」
by
Nobutada Matsubara
PDF
Build Dockferile with Haskell
by
Nobutada Matsubara
PDF
Elixir Programming with Type checking
by
Nobutada Matsubara
PDF
MixML 作ってみる
by
Nobutada Matsubara
PDF
Elm でなんかつくる
by
Nobutada Matsubara
PDF
Haskell と Elm と JSON の話
by
Nobutada Matsubara
PDF
ADVENTAR の Bot を作る with Haskell
by
Nobutada Matsubara
PDF
Haskell Backpack 事始め
by
Nobutada Matsubara
PDF
GitHub での Haskell の色が変わったんで
by
Nobutada Matsubara
PDF
日記って続かないよね...
by
Nobutada Matsubara
PDF
「7つの言語、7つの世界」を読む
by
Nobutada Matsubara
PDF
Lisper はじめました (再)
by
Nobutada Matsubara
PDF
Haskell で LINE Bot を作ってみた
by
Nobutada Matsubara
PDF
Marp colors
by
Nobutada Matsubara
PDF
Marp Tips
by
Nobutada Matsubara
PDF
Whitespcae 入門
by
Nobutada Matsubara
Haskell で作る競技型イベントの裏側
by
Nobutada Matsubara
Marp Next Theme: Colors
by
Nobutada Matsubara
Marp Next Tips !
by
Nobutada Matsubara
Haskell で CLI
by
Nobutada Matsubara
貧者のための「cron」
by
Nobutada Matsubara
Build Dockferile with Haskell
by
Nobutada Matsubara
Elixir Programming with Type checking
by
Nobutada Matsubara
MixML 作ってみる
by
Nobutada Matsubara
Elm でなんかつくる
by
Nobutada Matsubara
Haskell と Elm と JSON の話
by
Nobutada Matsubara
ADVENTAR の Bot を作る with Haskell
by
Nobutada Matsubara
Haskell Backpack 事始め
by
Nobutada Matsubara
GitHub での Haskell の色が変わったんで
by
Nobutada Matsubara
日記って続かないよね...
by
Nobutada Matsubara
「7つの言語、7つの世界」を読む
by
Nobutada Matsubara
Lisper はじめました (再)
by
Nobutada Matsubara
Haskell で LINE Bot を作ってみた
by
Nobutada Matsubara
Marp colors
by
Nobutada Matsubara
Marp Tips
by
Nobutada Matsubara
Whitespcae 入門
by
Nobutada Matsubara
Recently uploaded
PDF
Drupal Recipes 解説 .
by
iPride Co., Ltd.
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PPTX
ddevについて .
by
iPride Co., Ltd.
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜
by
法林浩之
Drupal Recipes 解説 .
by
iPride Co., Ltd.
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
ddevについて .
by
iPride Co., Ltd.
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜
by
法林浩之
Ruby4Ctf
1.
Ctfのための python ruby入門 ひげ
2.
尊敬すべき元ネタ 「Ctfのためのpython入門」 http://www.slideshare.net /shiracamus/ctfpython
3.
勝手にパロディました すいません
4.
自己紹介
5.
いろんな プログラミング言語 さわる人 (Rubyとか)
6.
最近Python さわり始めた人
7.
最近CTF始めた人
8.
「Ctfのためのpython入門」 に出会う
9.
Pythonで行けるな Rubyでもいけるのでは?
10.
調べたのでまとめます
11.
CTFあるある
12.
数値 文字 巨大整数演算 エンコード・デコード ハッシュ関数
13.
Rubyもできます! (pythonの方が楽な気がするけど)
14.
Rubyを使うには
15.
www.ruby-lang.org から ダウンロード インストール
16.
Rubyのバージョン
17.
新しいのを使おう! (現在 2.2.2)
18.
早速使ってみよう!
19.
インタープリタの起動と終了 sh $ irb irb>
exit sh $ sh $ ruby <filename> Rubyスクリプトファイルを実行する方法 ※ irb は Ruby で書かれている Rubyインタープリタなんだ!
20.
電卓として使う irb> 1 +
2 * 3 - 10 / 3 => 4 irb> 1 << 16 => 65536 irb> 5 ** 1024 => 556268464626...12890625 irb> 0xca ^ 0xfe => 52 irb> 'A' * 16 + '¥x86¥x64¥xca¥xfe' => "AAAAAAAAAAAAAAAA¥¥x86¥¥x64¥¥xca¥¥xfe" 四則演算 ビットシフト べき乗 (Bignum : 長整数) XOR(排他的論理和)
21.
電卓として使う irb> 'A' *
16 + '¥x86¥x64¥xca¥xfe' => "AAAAAAAAAAAAAAAA¥¥x86¥¥x64¥¥xca¥¥xfe" ¥x64 は ASCIIコードで ‘ d ’ のはず なぜ変換されないのか? (ちなみにPythonではされる)
22.
電卓として使う 実は原因はシングルクォートにある Rubyはシングル・ダブルクォートで動作が違う •ダブルクォーテーション • バックスラッシュ記法が使える • 式展開される •シングルクォーテーション •
バックスラッシュ記法が使えない • 式展開されない
23.
10進数 irb> 123 => 123 irb>
123.to_s => "123" irb> '123'.to_i => 123 irb> ‘%d’ % 123 => “123” irb> '%8d, %08d' % [123, 123] => " 123, 00000123" String クラスの % 演算子 タプル 配列
24.
16進数 irb> 123.to_s(16) => "7b" irb>
0x7b => 123 irb> '7b'.to_i(16) => 123 irb> '0x7b'.hex => 123 irb> '%-8x, %08x' % [123, 123] => "7b , 0000007b"
25.
8進数 irb> 123.to_s(8) => "173" irb>
'173'.to_i(8) => 123 irb> '0173'.oct => 123 irb> puts "%o¥n%06o" % [123, 123] 173 000173 => nil irb は入力した式の評価結果を返す
26.
2進数 irb> 123.to_s(2) => "1111011" irb>
'1111011'.to_i(2) => 123 irb> '0b1111011'.to_i(2) => 123 irb> sprintf('%b', 123) => "1111011" irb> sprintf('%016b', 123) => "0000000001111011" binメソッドはない
27.
文字 irb> 'A'.ord => 65 irb>
65.chr => "A" irb> 65.to_s(16) => "41" irb> (0x41 + 1).chr => "B"
28.
文字列/配列(リスト) irb> 'abc'.split('') => ["a",
"b", "c"] irb> 'abc'.split('').map{|c| c.ord} => [97, 98, 99] irb> [97, 98, 99].map{|x| x.chr} => ["a", "b", "c"] irb> 'abc'.split('').map{|c| c.ord.to_s(16)} => ["61", "62", "63"] irb> ['a', 'b', 'c'].join => "abc" Ruby の String は chr の配列ではない Ruby の map はめんどくさい でも、重ねがけが楽
29.
部分文字列 irb> 'abcdefg'[0] => "a" irb>
'abcdefg'[-1] => "g" irb> 'abcdefg'[1, 3] => "bcd" irb> 'abcdefg'[3..-1] => "defg" irb> 'abcdefg'[3...-1] => "def" 先頭 末尾 1番目から3文字分 3番目から末尾まで ただし、末尾を含む コッチは含まない
30.
文字列分割・連結 irb> '83 69
67 67 79 78'.split() => ["83", "69", "67", "67", "79", "78"] irb> '53:45:43:43:4f:4e'.split(':') => ["53", "45", "43", "43", "4f", "4e"] irb> [83, 69, 67, 67, 79, 78].join(' ') => "83 69 67 67 79 78" irb> ['53','45','43','43','4f','4e'].join(':') => "53:45:43:43:4f:4e"
31.
CTF過去問 CSAW CTF 2011
Crypto1 87 101 108 99 111 109 101 32 116 111 32 116 104 101 32 50 48 49 49 32 78 89 85 32 80 111 108 121 32 67 83 65 87 32 67 84 70 32 101 118 101 110 116 46 32 87 101 32 104 97 118 101 32 112 108 97 110 110 101 100 32 109 97 110 121 32 99 104 97 108 108 101 110 103 101 115 32 102 111 114 32 121 111 117 32 97 110 100 32 119 101 32 104 111 112 101 32 121 111 117 32 104 97 118 101 32 102 117 110 32 115 111 108 118 105 110 103 32 116 104 101 109 32 97 108 108 46 32 84 104 101 32 107 101 121 32 102 111 114 32 116 104 105 115 32 99 104 97 108 108 101 110 103 101 32 105 115 32 99 114 121 112 116 111 103 114 97 112 104 121 46 解法 10進数のASCIIコードなので数字から文字に変換 Hint: map method https://ctf.isis.poly.edu/static/archives/2011/challenges.php.html
32.
CTF過去問 CSAW CTF 2011
Crypto2 54:68:69:73:20:69:73:20:74:68:65:20:66:69:72:73:74:20:6d:65:73:73:6 1:67:65:20:62:65:69:6e:67:20:73:65:6e:74:20:74:6f:20:79:6f:75:20:62:7 9:20:74:68:65:20:6c:65:61:64:65:72:73:68:69:70:20:6f:66:20:74:68:65: 20:55:6e:64:65:72:67:72:6f:75:6e:64:20:55:70:72:69:73:69:6e:67:2e:20 :49:66:20:79:6f:75:20:68:61:76:65:20:64:65:63:6f:64:65:64:20:74:68:69 :73:20:6d:65:73:73:61:67:65:20:63:6f:72:72:65:63:74:6c:79:20:79:6f:75 :20:77:69:6c:6c:20:6e:6f:77:20:6b:6e:6f:77:20:6f:75:72:20:6e:65:78:74: 20:6d:65:65:74:69:6e:67:20:77:69:6c:6c:20:62:65:20:68:65:6c:64:20:6f :6e:20:57:65:64:6e:65:73:64:61:79:20:40:20:37:70:6d:2e:20:57:65:20:7 7:69:6c:6c:20:61:6c:73:6f:20:72:65:71:75:69:72:65:20:61:20:6b:65:79: 20:74:6f:20:62:65:20:6c:65:74:20:69:6e:74:6f:20:74:68:65:20:6d:65:65: 74:69:6e:67:73:3b:20:74:68:69:73:20:77:65:65:6b:1f:73:20:6b:65:79:20 :77:69:6c:6c:20:62:65:20:6f:76:65:72:74:68:72:6f:77:2e 解法 16進数のASCIIコードなので 16進数から10進数に直して文字に変換 https://ctf.isis.poly.edu/static/archives/2011/challenges.php.html
33.
CTF過去問 CSAW CTF 2011
Crypto3 01001100011000010111001101110100001000000111011101100101011001010110101101110011001000000110110101100 10101100101011101000110100101101110011001110010000001110111011000010111001100100000011000010010000001 10011101110010011001010110000101110100001000000111001101110101011000110110001101100101011100110111001 10010111000100000010101110110010100100000011100110110010101100101011011010010000001110100011011110010 00000110001001100101001000000110011101100101011011100110010101110010011000010111010001101001011011100 11001110010000001100001001000000110110001101111011101000010000001101111011001100010000001100010011101 01011110100111101000100000011000010110001001101111011101010111010000100000011101000110100001100101001 00000011011010110111101110110011001010110110101100101011011100111010000101110001000000101010001101000 01100101001000000110101101100101011110010010000001100110011011110111001000100000011011100110010101111 00001110100001000000111011101100101011001010110101101110011001000000110110101100101011001010111010001 10100101101110011001110010000001101001011100110010000001110010011001010111001101101001011100110111010 00110000101101110011000110110010100101110001000000100100101100110001000000111010001101000011001010111 00100110010100100000011010010111001100100000011000010110111001111001011011110110111001100101001000000 11001010110110001110011011001010010000001111001011011110111010100100000011010110110111001101111011101 11001000000110111101100110001000000111010001101000011000010111010000100000011011010110000101111001001 00000011000100110010100100000011010010110111001110100011001010111001001100101011100110111010001100101 01100100001000000110100101101110001000000110101001101111011010010110111001101001011011100110011100100 00001100010011100100110100101101110011001110010000001110100011010000110010101101101001000000111010001 10111100100000011101000110100001100101001000000110110101100101011001010111010001101001011011100110011 10010000001110100011010000110100101110011001000000111011101100101011001010110101100101110001000000100 10010111010000100000011101110110100101101100011011000010000001100010011001010010000001101000011001010 11011000110010000100000011100110110000101101101011001010010000001110100011010010110110101100101001011 00001000000111001101100001011011010110010100100000011100000110110001100001011000110110010100101110 解法 2進数のASCIIコードなので8桁ずつ分割して前と同じ n文字で分割する: ‘ irb> text.scan(/.{1,#{n}}/) ’ https://ctf.isis.poly.edu/static/archives/2011/challenges.php.html
34.
文字列変換 irb> "abc".unpack('H*') => ["616263"] irb>
["616263"].pack('H*') => "abc" irb> "abc".unpack('B*') => ["011000010110001001100011"] irb> ["011000010110001001100011"].pack('B*') => "abc" irb> "abc".unpack('C*') => [97, 98, 99] irb> [97, 98, 99].pack('C*') => "abc" これを使うとさっきの問題が とても簡単に解ける
35.
ROT13 ROT13変換とは13文字分ずらすシーザー暗号 Ruby には ROT13
を行うメソッドはない しかし、以下のようにすればよい irb> text.tr(‘A-Ma-mN-Zn-z’, ‘N-Zn-zA-Ma-m’) ※ Ruby はオープンクラスなので String クラスに rot13 メソッドを 自分で加えてもよい
36.
任意 ROT 関数 こんな感じ class
String def rot(n) return self.split('') .map{|c| /[A-Z]/ =~ c ? ('A'.ord + (c.ord - 'A'.ord + n) % 26).chr : c} .map{|c| /[a-z]/ =~ c ? ('a'.ord + (c.ord - 'a'.ord + n) % 26).chr : c} .join end end
37.
CTF過去問 KSNCTF : Easy
Cipher EBG KVVV vf n fvzcyr yrggre fhofgvghgvba pvcure gung ercynprf n yrggre jvgu gur yrggre KVVV yrggref nsgre vg va gur nycunorg. EBG KVVV vf na rknzcyr bs gur Pnrfne pvcure, qrirybcrq va napvrag Ebzr. Synt vf SYNTFjmtkOWFNZdjkkNH. Vafreg na haqrefpber vzzrqvngryl nsgre SYNT. 解法 ROT13を行う! ※ 英文中に1文字が現れるのは‘a’か‘I’ パッと見で大文字小文字は保持されているので n からROT13ではないのかとあたりをつける http://ksnctf.sweetduet.info/problem/2
38.
base64 印字可能な64文字( A-z, 0-9,
+, / )へのエンコード方式 (上記の記号に加えてパディングとして = も使われる) irb> ['abc'].pack('m') => "YWJj¥n" irb> "YWJj¥n".unpack('m') => ["abc"] irb> puts ['abc'].pack('m') YWJj => nil irb> "YWJj".unpack('m') => ["abc"]
39.
uu バイナリ・テキストデータ間のエンコード方式の一つ 電子メールの添付データなどでよく使われた begin <mode> <pathname> #86)C end modeは3桁の数字 ココにエンコードされた文字列 実は空白が1つある irb>
['abc'].pack('u') => "#86)C¥n" irb> '#86)C¥n'.unpack('u') => ["abc"] エンコードされた文字列だけ出力 入力もエンコードされた文字列だけ
40.
CTF過去問 KSNCTF : Onion EVm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTV0ZKdGVGWlZNakExVmpBeFYySkVU bGhoTWsweFZtcEdZV015U2tWVQpiR2hvVFZWd1ZWWnRjRWRUTWxKSVZtdFdVZ3BpVlZwWVZtMTRj MDB4V25GUmJVWlVUV3hLU1ZadGRHdFhRWEJwVW01Q1VGZFhNSGhpCk1WWlhWMjVHVW1KVldtRldh a0Y0VGxaVmVXUkdaRmRWV0VKd1ZXcEtiMlJzV2tkWGJHUnJDazFXY0ZoV01qVlRZV3hLV0ZWdFJs ZGgKYTFwTVZURmFZV1JIVWtkYVJscGhUVEJLZDFadGVHRmtNV1JYVjI1U1RsWkdTbkZEYXpGRlVX cFNWMDFxVmxSWlYzaExWMFpXYzFacwpWbGNLVFRKb1RWWlVSbUZaVjFKSVZXdHNWV0pYYUZkV01G : : Vm14d2FGbDZSbUZXVmtwMFpFWmthVkp1UWtwV2JYaGhZakpGZUZkcmFGWlhSM2hSVld0a05GSlda SFVLWWpOa1VGVlkKUWtWWGJtOTNUMVZPYmxCVU1Fc0sK 解法 base64
+ uuencode http://ksnctf.sweetduet.info/problem/3
41.
ハッシュ値 irb> require 'digest' =>
true irb> Digest::MD5.hexdigest('abc') => "900150983cd24fb0d6963f7d28e17f72" irb> Digest::SHA1.hexdigest('abc') => "a9993e364706816aba3e25717850c26c9cd0d89d" irb> Digest::SHA256.hexdigest('abc') => "ba7816bf8f01cfea414140de5dae2223b00361a39617 7a9cb410ff61f20015ad" irb> Digest::SHA512.hexdigest('abc') => "ddaf35a193617abacc417349ae20413112e6fa4e89a9 7ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a 3feebbd454d4423643ce80e2a9ac94fa54ca49f"
42.
バイナリファイルの入出力 読み込み irb> binary = File.binread('Reverseit').unpack(‘H*’) 書き込み irb>
File.binwrite('aaa', binary.pack('H*')) ※ pack, unpack は 引数で ‘H*’を与えることで バイナリデータと16進数での相互変換をしている ※ ほかにも File.open(filename, ‘rb’) とかもある
43.
CTF過去問 SECCON 2014 :
Reverse it Reverseit という謎のファイルが配られる 解法 バイナリデータを読み出す 16進数の1文字ずつ反転 バイナリデータを書き込む JPEGファイルになりFLAGが書いてある (画像も反転してるのでImageMagick等で反転する) ※ 反転するという発想は問題名やバイナリのヘッダから推測 https://github.com/ctfs/write-ups-2014/tree/master/seccon-ctf-2014/reverse-it
44.
外部コマンドの実行 統一的で便利 require ‘open3’ out, err,
status = Open3.capture3(‘ls -l’) 出力が戻り値で受け取れる `ls -l` 戻り値は真偽値 system(‘ls -l‘) いろいろ種類がある
45.
Socket通信 require ‘socket’ solve =
‘hoge’ s = TCPSocket.open(‘123.45.67.89’, 1234) s.puts(hoge) s.close
46.
HTTP通信 require ‘net/http’ http =
Net::HTTP.new(‘www.yahoo.co.jp’) response = http.head(‘/’) p response
47.
おしまい ありがとうございました
Download