Suche senden
Hochladen
Ruby4Ctf
•
2 gefällt mir
•
700 views
Nobutada Matsubara
Folgen
origin http://www.slideshare.net/shiracamus/ctfpython
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 47
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
出張 CTF for ビギナーズ 2015 幕張 in セキュリティ・キャンプ 成果報告
出張 CTF for ビギナーズ 2015 幕張 in セキュリティ・キャンプ 成果報告
Ikumi Shimizu
Ctfのためのpython入門
Ctfのためのpython入門
shiracamus
20180728 halide-study
20180728 halide-study
Fixstars Corporation
TVM の紹介
TVM の紹介
Masahiro Masuda
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
直久 住川
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
MITSUNARI Shigeo
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
MITSUNARI Shigeo
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
Juniper Networks (日本)
Empfohlen
出張 CTF for ビギナーズ 2015 幕張 in セキュリティ・キャンプ 成果報告
出張 CTF for ビギナーズ 2015 幕張 in セキュリティ・キャンプ 成果報告
Ikumi Shimizu
Ctfのためのpython入門
Ctfのためのpython入門
shiracamus
20180728 halide-study
20180728 halide-study
Fixstars Corporation
TVM の紹介
TVM の紹介
Masahiro Masuda
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
直久 住川
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
MITSUNARI Shigeo
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
MITSUNARI Shigeo
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
Juniper Networks (日本)
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
Prosym2012
Prosym2012
MITSUNARI Shigeo
LLVM最適化のこつ
LLVM最適化のこつ
MITSUNARI Shigeo
From IA-32 to avx-512
From IA-32 to avx-512
MITSUNARI Shigeo
フラグを愛でる
フラグを愛でる
MITSUNARI Shigeo
WebRTC getStats - WebRTC Meetup Tokyo 5 LT
WebRTC getStats - WebRTC Meetup Tokyo 5 LT
mganeko
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
MITSUNARI Shigeo
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
MITSUNARI Shigeo
新しい並列for構文のご提案
新しい並列for構文のご提案
yohhoy
Boost Tour 1.48.0 diff
Boost Tour 1.48.0 diff
Akira Takahashi
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MITSUNARI Shigeo
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
llvm入門
llvm入門
MITSUNARI Shigeo
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
MITSUNARI Shigeo
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
Wavelet matrix implementation
Wavelet matrix implementation
MITSUNARI Shigeo
optimal Ate pairing
optimal Ate pairing
MITSUNARI Shigeo
Fftw誰得ガイド
Fftw誰得ガイド
chunjp
SKIコンビネーターによる処理系の作成
SKIコンビネーターによる処理系の作成
Nobutada Matsubara
バイナリアンを目指して For a binaryen
バイナリアンを目指して For a binaryen
Eyes, JAPAN
Weitere ähnliche Inhalte
Was ist angesagt?
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
Prosym2012
Prosym2012
MITSUNARI Shigeo
LLVM最適化のこつ
LLVM最適化のこつ
MITSUNARI Shigeo
From IA-32 to avx-512
From IA-32 to avx-512
MITSUNARI Shigeo
フラグを愛でる
フラグを愛でる
MITSUNARI Shigeo
WebRTC getStats - WebRTC Meetup Tokyo 5 LT
WebRTC getStats - WebRTC Meetup Tokyo 5 LT
mganeko
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
MITSUNARI Shigeo
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
MITSUNARI Shigeo
新しい並列for構文のご提案
新しい並列for構文のご提案
yohhoy
Boost Tour 1.48.0 diff
Boost Tour 1.48.0 diff
Akira Takahashi
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MITSUNARI Shigeo
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
llvm入門
llvm入門
MITSUNARI Shigeo
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
MITSUNARI Shigeo
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
Wavelet matrix implementation
Wavelet matrix implementation
MITSUNARI Shigeo
optimal Ate pairing
optimal Ate pairing
MITSUNARI Shigeo
Fftw誰得ガイド
Fftw誰得ガイド
chunjp
Was ist angesagt?
(20)
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
Prosym2012
Prosym2012
LLVM最適化のこつ
LLVM最適化のこつ
From IA-32 to avx-512
From IA-32 to avx-512
フラグを愛でる
フラグを愛でる
WebRTC getStats - WebRTC Meetup Tokyo 5 LT
WebRTC getStats - WebRTC Meetup Tokyo 5 LT
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
新しい並列for構文のご提案
新しい並列for構文のご提案
Boost Tour 1.48.0 diff
Boost Tour 1.48.0 diff
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
llvm入門
llvm入門
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
Wavelet matrix implementation
Wavelet matrix implementation
optimal Ate pairing
optimal Ate pairing
Fftw誰得ガイド
Fftw誰得ガイド
Andere mochten auch
SKIコンビネーターによる処理系の作成
SKIコンビネーターによる処理系の作成
Nobutada Matsubara
バイナリアンを目指して For a binaryen
バイナリアンを目指して For a binaryen
Eyes, JAPAN
初心者が Python で戸惑ったところ
初心者が Python で戸惑ったところ
Emma Haruka Iwao
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
Python入門
Python入門
Shohei Okada
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
SECCON Beginners
Pythonで機械学習入門以前
Pythonで機械学習入門以前
Kimikazu Kato
Lisper はじめました(大嘘)
Lisper はじめました(大嘘)
Nobutada Matsubara
160924 Deep Learning Tuningathon
160924 Deep Learning Tuningathon
Takanori Ogata
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
洋資 堅田
Pythonを使った機械学習の学習
Pythonを使った機械学習の学習
Kimikazu Kato
C++でできる!OS自作入門
C++でできる!OS自作入門
uchan_nos
ハッキング実演
ハッキング実演
Ken Ogura
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
kikuchan98
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニング
Yuichi Ito
Andere mochten auch
(15)
SKIコンビネーターによる処理系の作成
SKIコンビネーターによる処理系の作成
バイナリアンを目指して For a binaryen
バイナリアンを目指して For a binaryen
初心者が Python で戸惑ったところ
初心者が Python で戸惑ったところ
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
Python入門
Python入門
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
Pythonで機械学習入門以前
Pythonで機械学習入門以前
Lisper はじめました(大嘘)
Lisper はじめました(大嘘)
160924 Deep Learning Tuningathon
160924 Deep Learning Tuningathon
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
Pythonを使った機械学習の学習
Pythonを使った機械学習の学習
C++でできる!OS自作入門
C++でできる!OS自作入門
ハッキング実演
ハッキング実演
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニング
Ähnlich wie Ruby4Ctf
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
FFRI, Inc.
関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会
Koichi Sakata
「個人でも手軽に引ける回線を使って、快適なMy Home Networkを作ったお話」「SEILちゃんを使った、お手軽・しっかりなリモートアクセス(RAS...
「個人でも手軽に引ける回線を使って、快適なMy Home Networkを作ったお話」「SEILちゃんを使った、お手軽・しっかりなリモートアクセス(RAS...
IIJ
Pakena #9
Pakena #9
(^-^) togakushi
lilo.linux.or.jp を buster から bullseye に上げた
lilo.linux.or.jp を buster から bullseye に上げた
Kazuhiro Nishiyama
Boost Tour 1.50.0 All
Boost Tour 1.50.0 All
Akira Takahashi
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
Toru Furukawa
ネイティブコードを語る
ネイティブコードを語る
Kenji Imasaki
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
yaegashi
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
kozossakai
CTF(Capture the Flag)って何?
CTF(Capture the Flag)って何?
Kenji Aiko
文献紹介:Video Description: A Survey of Methods, Datasets, and Evaluation Metrics
文献紹介:Video Description: A Survey of Methods, Datasets, and Evaluation Metrics
Toru Tamaki
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
SystemC Tutorial
SystemC Tutorial
kocha2012
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
de:code 2017
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
信之 岩永
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutes
Yohei Azekatsu
IPv6アドレスでお絵かき
IPv6アドレスでお絵かき
Yasuyuki Nakamura
Rubysapporo Stringsearch
Rubysapporo Stringsearch
Akio Ishida
文献紹介:Selective Feature Compression for Efficient Activity Recognition Inference
文献紹介:Selective Feature Compression for Efficient Activity Recognition Inference
Toru Tamaki
Ähnlich wie Ruby4Ctf
(20)
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会
「個人でも手軽に引ける回線を使って、快適なMy Home Networkを作ったお話」「SEILちゃんを使った、お手軽・しっかりなリモートアクセス(RAS...
「個人でも手軽に引ける回線を使って、快適なMy Home Networkを作ったお話」「SEILちゃんを使った、お手軽・しっかりなリモートアクセス(RAS...
Pakena #9
Pakena #9
lilo.linux.or.jp を buster から bullseye に上げた
lilo.linux.or.jp を buster から bullseye に上げた
Boost Tour 1.50.0 All
Boost Tour 1.50.0 All
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
ネイティブコードを語る
ネイティブコードを語る
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
CTF(Capture the Flag)って何?
CTF(Capture the Flag)って何?
文献紹介:Video Description: A Survey of Methods, Datasets, and Evaluation Metrics
文献紹介:Video Description: A Survey of Methods, Datasets, and Evaluation Metrics
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
SystemC Tutorial
SystemC Tutorial
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutes
IPv6アドレスでお絵かき
IPv6アドレスでお絵かき
Rubysapporo Stringsearch
Rubysapporo Stringsearch
文献紹介:Selective Feature Compression for Efficient Activity Recognition Inference
文献紹介:Selective Feature Compression for Efficient Activity Recognition Inference
Mehr von Nobutada Matsubara
Haskell で作る競技型イベントの裏側
Haskell で作る競技型イベントの裏側
Nobutada Matsubara
Marp Next Theme: Colors
Marp Next Theme: Colors
Nobutada Matsubara
Marp Next Tips !
Marp Next Tips !
Nobutada Matsubara
Haskell で CLI
Haskell で CLI
Nobutada Matsubara
貧者のための「cron」
貧者のための「cron」
Nobutada Matsubara
Build Dockferile with Haskell
Build Dockferile with Haskell
Nobutada Matsubara
Elixir Programming with Type checking
Elixir Programming with Type checking
Nobutada Matsubara
MixML 作ってみる
MixML 作ってみる
Nobutada Matsubara
Elm でなんかつくる
Elm でなんかつくる
Nobutada Matsubara
Haskell と Elm と JSON の話
Haskell と Elm と JSON の話
Nobutada Matsubara
ADVENTAR の Bot を作る with Haskell
ADVENTAR の Bot を作る with Haskell
Nobutada Matsubara
Haskell Backpack 事始め
Haskell Backpack 事始め
Nobutada Matsubara
GitHub での Haskell の色が変わったんで
GitHub での Haskell の色が変わったんで
Nobutada Matsubara
日記って続かないよね...
日記って続かないよね...
Nobutada Matsubara
「7つの言語、7つの世界」を読む
「7つの言語、7つの世界」を読む
Nobutada Matsubara
Lisper はじめました (再)
Lisper はじめました (再)
Nobutada Matsubara
Haskell で LINE Bot を作ってみた
Haskell で LINE Bot を作ってみた
Nobutada Matsubara
Marp colors
Marp colors
Nobutada Matsubara
Marp Tips
Marp Tips
Nobutada Matsubara
Whitespcae 入門
Whitespcae 入門
Nobutada Matsubara
Mehr von Nobutada Matsubara
(20)
Haskell で作る競技型イベントの裏側
Haskell で作る競技型イベントの裏側
Marp Next Theme: Colors
Marp Next Theme: Colors
Marp Next Tips !
Marp Next Tips !
Haskell で CLI
Haskell で CLI
貧者のための「cron」
貧者のための「cron」
Build Dockferile with Haskell
Build Dockferile with Haskell
Elixir Programming with Type checking
Elixir Programming with Type checking
MixML 作ってみる
MixML 作ってみる
Elm でなんかつくる
Elm でなんかつくる
Haskell と Elm と JSON の話
Haskell と Elm と JSON の話
ADVENTAR の Bot を作る with Haskell
ADVENTAR の Bot を作る with Haskell
Haskell Backpack 事始め
Haskell Backpack 事始め
GitHub での Haskell の色が変わったんで
GitHub での Haskell の色が変わったんで
日記って続かないよね...
日記って続かないよね...
「7つの言語、7つの世界」を読む
「7つの言語、7つの世界」を読む
Lisper はじめました (再)
Lisper はじめました (再)
Haskell で LINE Bot を作ってみた
Haskell で LINE Bot を作ってみた
Marp colors
Marp colors
Marp Tips
Marp Tips
Whitespcae 入門
Whitespcae 入門
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.
おしまい ありがとうございました
Jetzt herunterladen