ももいろテクノロジー[B!]新着記事・評価 - はてなブックマーク (original) (raw)

4 users
inaz2.hatenablog.com
バッファスタックオーバーフローに並んでよく知られている攻撃に、format string attack(書式文字列攻撃)がある。 これは、printf系関数のフォーマット文字列が外部から操作可能になっている場合に、細工した文字列を送り込んでメモリ内容の読み出しや書き換えを行う攻撃である。 ここでは、実際にformat string attackによるメモリ内容の読み出しをやってみる。 環境 Ubuntu 12.04 LTS 32bit版 $ uname -a Linux vm-ubuntu32 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:42:40 UTC 2014 i686 i686 i386 GNU/Linux $ lsb_release -a No LSB modules are available. Distrib

3 users
inaz2.hatenablog.com
USB HDD間で大容量のファイルコピーを行う必要が出てきたので、調べてみた。 rsyncでファイルコピーを行うには、次のようにすればよい。 コピー元のパスについて、最後にスラッシュをつけない場合はディレクトリごと、つける場合はディレクトリの中身ごとのコピーとなる。 また、SSH経由でリモートサーバにアクセスする場合は、user@server:/path/to/srcのように指定する。 $ rsync -avhP /path/to/src /path/to/dst オプションの意味は下記の通り。 $ rsync --version rsync version 3.0.9 protocol version 30 $ man rsync -v, --verbose increase verbosity -a, --archive archive mode; equals -rlptgoD (n

21 users
inaz2.hatenablog.com
OS起動中に保持されるDNSキャッシュを表示するには、ipconfig /displaydns または powershell -c Get-DNSClientCache (Windows 8以降)を使う。 >ipconfig /displaydns Windows IP 構成 www.gstatic.com ---------------------------------------- タイプ AAAA のレコードがありません www.gstatic.com ---------------------------------------- レコード名 . . . . . . . : www.gstatic.com レコードの種類 . . . . . : 1 Time To Live . . . . . .: 236 データの長さ . . . . . . : 4 セクション . . . .

3 users
inaz2.hatenablog.com
「Spring Bootで簡単なWebアプリケーションを書いてみる」では、Spring Bootで簡単なWebアプリケーションを書いた。 ここでは、デフォルトのエラーページをカスタマイズしてみる。 環境 Windows 10 Pro、Java SE 8、Spring Framework 4.3.7.RELEASE(Spring Boot 1.5.2.RELEASE) >systeminfo OS 名: Microsoft Windows 10 Pro OS バージョン: 10.0.14393 N/A ビルド 14393 OS ビルドの種類: Multiprocessor Free システムの種類: x64-based PC プロセッサ: 1 プロセッサインストール済みです。 [01]: Intel64 Family 6 Model 69 Stepping 1 GenuineIntel ~1

4 users
inaz2.hatenablog.com
「Spring Bootで簡単なWebアプリケーションを書いてみる」では、Spring Bootで簡単なWebアプリケーションを書いた。 ここでは作成したアプリケーションをベースに、APIとしてJSONを返したり、Excelファイルとしてダウンロードするエンドポイントを作ってみる。 環境 Windows 10 Pro、Java SE 8、Spring Framework 4.3.7.RELEASE(Spring Boot 1.5.2.RELEASE) >systeminfo OS 名: Microsoft Windows 10 Pro OS バージョン: 10.0.14393 N/A ビルド 14393 OS ビルドの種類: Multiprocessor Free システムの種類: x64-based PC プロセッサ: 1 プロセッサインストール済みです。 [01]: Intel64 F

3 users
inaz2.hatenablog.com
Haskellを勉強してきて、ようやくモナドの雰囲気がわかってきたので、Maybeモナドのような計算をPythonでやってみる。 #!/usr/bin/env python # -*- coding: utf-8 -*- # instance Monad Maybe where # return = Just # fail = Nothing def Maybe(x): return Just(x) if x else Nothing() class Just: def __init__(self, x): self.value = x def __repr__(self): return "Just(%r)" % self.value # (Just x) >>= f = f x def bind(self, f): return f(self.value) # '>>=' の代わりに

8 users
inaz2.hatenablog.com
ssmjp スペシャル 〜すみだとささみとみちおさん〜のお知らせ – ssmjp Infomation ssmjpスペシャル(2017/06/04) - すみだセキュリティ勉強会 2年前に発表していた勉強会が久しぶりに開催されるということで、Use-after-free攻撃の原理と対策について話した。 Can We Prevent Use-after-free Attacks? from inaz2 最近はCTFが盛り上がっていることもあり、攻撃手法についての話を見ることが多いのだけど、そこから先のどうやったら防げるかという話を見ることは相対的に少ないように思う。 しかし、Attack and Defence形式のCTFにおけるDefence部分だったり、Cyber Grand Challangeにおけるpatch適用の自動化だったり、防御側の視点というのもあるわけで、そういった視点への理

14 users
inaz2.hatenablog.com
近年、量子コンピュータ研究の進展により、量子コンピュータでも解くのが難しい暗号(Post-quantum cryptography; 耐量子計算機暗号)への注目が高まっている。 ここでは、耐量子計算機暗号のひとつであるLWE格子暗号の原理を説明し、単純化したアルゴリズムで暗号化を行うプログラムコードを書いてみる。 格子とLearning with Errors問題 LWE格子暗号は、Learning with Errorsと呼ばれる問題をもとにした公開鍵暗号方式である。 格子とは、基底ベクトルの整数係数線形結合で表される点(格子点)からなる集合である。 格子については、直交しない基底ベクトルからある点Pに最も近い格子点を求めることが計算量的に困難であるといわれている。 これは、最近ベクトル問題(Closest Vector Problem; CVP)と呼ばれる。 Learning with

13 users
inaz2.hatenablog.com
「Spring Bootで簡単なWebアプリケーションを書いてみる」では、Spring Bootで簡単なWebアプリケーションを書いた。 ここでは作成したアプリケーションをベースに、Spring Securityを使ってユーザ認証を実装してみる。 環境 Windows 10 Pro、Java SE 8、Spring Framework 4.3.7.RELEASE(Spring Boot 1.5.2.RELEASE) >systeminfo OS 名: Microsoft Windows 10 Pro OS バージョン: 10.0.14393 N/A ビルド 14393 OS ビルドの種類: Multiprocessor Free システムの種類: x64-based PC プロセッサ: 1 プロセッサインストール済みです。 [01]: Intel64 Family 6 Model 69 S

18 users
inaz2.hatenablog.com
JavaでWebアプリケーションを開発する際のフレームワークとして、近年Apache Strutsに代わりSpring Frameworkが広く使われている。 ここでは、Springが提供するBootstrapフレームワークSpring Bootを用いて、簡単なWebアプリケーションを書いてみる。 環境 Windows 10 Pro、Java SE 8、Spring Framework 4.3.7.RELEASE(Spring Boot 1.5.2.RELEASE) >systeminfo OS 名: Microsoft Windows 10 Pro OS バージョン: 10.0.14393 N/A ビルド 14393 OS ビルドの種類: Multiprocessor Free システムの種類: x64-based PC プロセッサ: 1 プロセッサインストール済みです。 [01]: I

4 users
inaz2.hatenablog.com
Windowsアプリケーションを実行する際、まれに次のようなエラーメッセージが表示されて起動できないことがある。 コンピューターに MSVCR120.dll がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてください。 MSVCR120.dllの部分は、MSVCP140.dllなど微妙に異なる場合もある。 エラーメッセージに従い再インストールすればよいように思われるが、それでも解決しないことがある。 これは、配布されたアプリケーションが「Visual C++ 再頒布可能パッケージ」を同梱していないか、同梱されたバージョンが一致していないことが原因で起こる。 解決するには、Microsoftが配布している「Visual C++ 再頒布可能パッケージ」をインストールすればよい。 DLL名は「ライブラリ名+バージョン番号」に従って命名されているのだが、

7 users
inaz2.hatenablog.com
「scikit-learnでPCA散布図を描いてみる」では、scikit-learnを使ってPCA散布図を描いた。 ここでは、scikit-learnを使って非線形次元削減手法のひとつt-SNEで次元削減を行い、散布図を描いてみる。 環境 「scikit-learnでPCA散布図を描いてみる」を参照。 MNISTデータセットとPCA散布図 MNISTデータセットは0から9の手書き数字を表す8x8グレイスケール画像のデータセットであり、irisに並んで有名なサンプルデータセットである。 The Digit Dataset — scikit-learn 0.18.1 documentation このデータセットについてPCA散布図を描いてみると次のようになる。 %matplotlib inline import matplotlib.pyplot as plt from sklearn imp

3 users
inaz2.hatenablog.com
「Pari/GPでECDH鍵交換、ECDSA署名をやってみる」では、数式処理システムPari/GPを使ってECDH鍵交換、ECDSA署名の計算を行った。 これらの楕円曲線暗号は、楕円曲線離散対数問題(ECDLP)と呼ばれる問題が計算量的に困難であることを安全性の根拠としている。 ここでは、実際にbit数の小さな楕円曲線に対して楕円曲線離散対数を計算し、簡単に解けるbit数がどのくらいか調べてみる。 環境 Ubuntu 16.04.1 LTS 64bit版、Pari/GP 2.7.5、Intel Core i5-4200U (1.6GHz * 2 * 2) $ uname -a Linux vm-ubuntu64 4.4.0-59-generic #80-Ubuntu SMP Fri Jan 6 17:47:47 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

9 users
inaz2.hatenablog.com
GNU Screenでウィンドウタイトルを 普段はカレントディレクトリのディレクトリ名 コマンド実行中はコマンド名 SSHログイン中はリモートホスト名 に自動変更し、非アクティブウィンドウでコマンドが終了した際にハイライトさせる方法のメモ。 ここでは、次のようにscreenrcに書いておくことで、常に各ウィンドウのタイトルが表示されている状態を想定する。 hardstatus alwayslastline "%{=r dd}%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<" また、シェルとしてbashを想定する。 Dynamic Titlesを使う screenでは、適当なオプションとシェルのプロンプト文字列(PS1)を設定することで 普段はシェル名などの固定文字列 コマンド実行中はコマンド名 をタイトルに自動設定することができる。 Dynamic Titles - Sc

3 users
inaz2.hatenablog.com
この記事は「CTF Advent Calendar 2016」24日目の記事です。 「glibc malloc exploit techniques」では主要なmalloc系exploitテクニックについて説明したが、歴史的には他にもさまざまな手法が公表されている。 ここでは、2005年にBugtraqメーリングリストにて公表されたテキスト「The Malloc Maleficarum」についてまとめてみる。 環境 Ubuntu Server 16.04.1 LTS 64bit版、GLIBC 2.23 $ uname -a Linux vm-ubuntu64 4.4.0-53-generic #74-Ubuntu SMP Fri Dec 2 15:59:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a No LSB mo

4 users
inaz2.hatenablog.com
この記事は「CTF Advent Calendar 2016」17日目の記事です。 ちょいちょい見かけてはいるのだが、実戦でよく忘れてしまうので応用の効きそうなものをまとめておく。 ROPからのGOT overwrite 単純なROP問題の場合、GOTに置かれた関数アドレスを読み出した後offsetからsystem関数のアドレスを計算し、それを用いてsystem("/bin/sh")を呼ぶという流れになる。 最後の部分はStack pivotでやってもよいのだが、Full-RELROでない場合、すなわちGOTの書き換えができる場合はGOT overwriteしてPLT経由で呼んだほうが楽である。 x86でROPするだけで200点取ることができた、古きよき時代のropasaurusrex (PlaidCTF 2013)でやると次のようになる。 from minipwn import * s

54 users
inaz2.hatenablog.com
この記事は「情報セキュリティ系論文紹介 Advent Calendar 2016」14日目の記事です。 近年、ディープラーニングと呼ばれる機械学習手法の進展もあいまって、ディープラーニングではない機械学習もそこそこの注目を集めている。 ここでは、2016年に公表された機械学習系の情報セキュリティ論文について、気になったものをまとめてみる。 discovRE: Efficient Cross-Architecture Identification of Bugs in Binary Code (NDSS 2016) Paper 命令数等の複数の数値指標を用いてk-Nearest Neighborによるフィルタリングを行った後、Maximum common subgraph(MCS)によるControl Flow Graphの類似度比較を行うことで、バイナリ(ファームウェア)から既知の脆弱性を

7 users
inaz2.hatenablog.com
この記事は「CTF Advent Calendar 2016」9日目の記事です。 RSA暗号は二つの素数p, qから計算されるn=p*qを公開鍵として暗号化を行うものであるが、これを一般化したものとしてMulti-prime RSAがある。 ここでは、Multi-prime RSAの概要を説明し、これを題材にした問題を紹介する。 Multi-prime RSA RSA暗号は、二つの素数p, qとある条件を満たす整数eを用いて、次のような式をもとに計算される。 n = p * q phi(n) = (p-1) * (q-1) d = e^(-1) mod phi(n) c = m^e mod n m = c^d mod n mは平文、cは暗号文を表し、公開鍵はnおよびe、秘密鍵はdである。 また、phi(n)はオイラーのトーシェント関数と呼ばれる関数であり、nと互いに素となるn以下の自然数の

14 users
inaz2.hatenablog.com
malloc系exploitテクニックのうち、応用しやすそうなもののメモ。 環境 Ubuntu Server 16.04.1 LTS 64bit版、GLIBC 2.23 $ uname -a Linux vm-ubuntu64 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: xenial $ /lib/x86_64-linux-gnu/libc.so.6 GNU C Library (Ubuntu GLIB

6 users
inaz2.hatenablog.com
整数に関係するバグについてのメモ。 環境 Ubuntu 14.04.4 LTS 64bit版 $ uname -a Linux vm-ubuntu64 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.4 LTS Release: 14.04 Codename: trusty $ gcc --version gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 整数オーバーフロー(Integer Overflow) 整数オ

17 users
inaz2.hatenablog.com
プレゼンテーション:HTTPプロクシライブラリproxy2の設計と実装 | PyCon JP 2016 in TOKYO PyCon JP 2016で以前作ったPython製HTTPプロクシライブラリについて発表した。 HTTPプロクシライブラリproxy2の設計と実装 from inaz2 きちんとPython 3対応にした状態で発表できなかったのが少し心残りではあるが、以前の発表であまり触れられなかった実装面のあれこれについてまとめることができてよかった。 また、Accept-Encodingの扱いが雑で、うまくいかないケースが出てきていることに気づけたという点でも、よい機会だった。 スタッフ、参加者の方とも交流することができ、楽しいイベントでした。 PyCon JPスタッフのみなさま、ありがとうございました。

3 users
inaz2.hatenablog.com
viコマンドとして標準でインストールされていることが多いvim-tinyにて、コメントアウトや複数行のインデントに便利なコマンドのメモ。 矩形挿入 C-vして矩形選択し、Iを押して文字列を入力した後Esc。 反映されるまでに若干のタイムラグがある。 なお、スペース4文字の場合はIの代わりに4Iでもよい。 矩形削除 C-vして矩形選択し、x。 関連リンク まさおのブログ (表): Vim で矩形編集

3 users
inaz2.hatenablog.com
555タイマーIC(集積回路)を発振回路として使うと、さまざまな周波数の矩形波を作ることができる。 また、圧電スピーカーを使うと、一定の周波数で電圧を変化させることにより音を出すことができる。 ここでは、これらと半固定抵抗を組み合わせ、単純な回路によるアナログシンセサイザーもどきを作ってみる。 部品調達 長いブレッドボード(参考) ジャンパワイヤ(参考) 006P型9V電池および電池ケース(参考) 圧電スピーカー SPT08 x1(参考) タイマーIC NE555P x2(参考) CMOS版のLMC555CN(参考)でも可 汎用オペアンプ LM358N x1(参考) つまみ付き半固定ボリューム 20kΩ x2、50kΩ x2、100kΩ x1(参考) アルミ電解コンデンサ 10uF x2(参考) 積層セラミックコンデンサ 0.01uF x1、0.1uF x3(参考) 1/4Wカーボン抵抗

28 users
inaz2.hatenablog.com
Raspberry Pi 3にはWi-Fiモジュール(Broadcom BCM43438)が搭載されているが、このモジュールはクライアントとしてだけではなく、アクセスポイントとして動作させることもできる。 ここでは、Raspberry Pi 3でDHCPサーバ付き無線ルータを作り、アクセスポイントに接続するだけで簡単にパケットキャプチャできるようにしてみる。 環境 Raspberry Pi 3 Model B (Raspbian Jessie Lite) $ uname -a Linux raspberrypi 4.4.9-v7+ #884 SMP Fri May 6 17:28:59 BST 2016 armv7l GNU/Linux $ cat /etc/os-release PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)" NAME="Raspb

9 users
inaz2.hatenablog.com
次のページを参考に簡易電界強度計を作り、Wi-Fi 2.4GHzの電波強度をLEDで可視化してみる。 電波を見える化 簡易電界強度計(テレメーターテスター)の作成 | 制作事例 | 臨床工学技士の為の電子工作 部品調達 ブレッドボード(参考) ジャンパワイヤセット(参考) ショットキーバリアダイオード1N60×2(参考) 同名のゲルマニウムダイオードがあることに注意 汎用オペアンプLM358AN×1(参考) LM358N(参考)は不可 1/4Wカーボン抵抗1kΩ×2、1MΩ×1(参考) 積層セラミックコンデンサ0.01μF×2(参考) 5mm高輝度LED×1(参考) 006P型9V電池および電池ケース(参考) アンテナ用すずメッキ線(針金、ジャンパワイヤでも可) 回路図 上のページで利用しているショットキーバリアダイオード1SS108は生産終了品になっているので、代わりに1N60を用い、次

3 users
inaz2.hatenablog.com
ASLRが有効な場合、スタック領域・ヒープ領域や共有ライブラリが置かれるアドレスは一定の範囲の中でランダムに決められる。 一方、実行ファイルそのものが置かれるアドレスは基本的には固定であるが、PIE (Position-Independent Executables) となるようにコンパイル・リンクすることでランダムなアドレスに置けるようにできる。 また、ASLRを迂回する手法の一つにInformation LeakあるいはInformation Exposureと呼ばれる脆弱性を利用するものがある。 ここではPIEな実行ファイルを作成し、ASLR+PIEが有効な実行ファイルに対してformat string attackによるInformation Leakを使ったシェルの起動をやってみる。 環境 Ubuntu 12.04 LTS 32bit版 $ uname -a Linux vm-u

5 users
inaz2.hatenablog.com
「Raspberry PiとUSBチューナー(RTL2832U+R820T)でFMラジオを受信してみる」では、市販のUSBチューナーを使ってFMラジオを受信してみた。 ここでは、SDR(Software-defined Radio)ツールであるGNU Radioを使ってFMラジオ受信機を作ってみる。 環境 Windows 10 Pro 64 bit版、Intel® Core™ i5-4200U Processor (3M Cache, up to 2.60 GHz) >systeminfo OS 名: Microsoft Windows 10 Pro OS バージョン: 10.0.10586 N/A ビルド 10586 OS ビルドの種類: Multiprocessor Free システムの種類: x64-based PC プロセッサ: 1 プロセッサインストール済みです。 [01]: I

10 users
inaz2.hatenablog.com
Google、FacebookなどのWebサービスやAdWords、DoubleClickなどの広告ネットワークは、ユーザのアクセス履歴や訪問サイト・検索ワード等を収集し、サービスのパーソナライズや広告表示に利用していることが知られている。 ここでは、そのような行動履歴データの取り扱いポリシーとサービスへの適用可否の設定方法についてまとめてみる。 Google Googleが収集しているデータについては次に説明がある。 http://www.google.com/policies/privacy/ アカウントに関連付けられたデータの一部は次から確認できる。 https://myactivity.google.com/ サービスへの適用可否については、次のページから設定できる。 https://myaccount.google.com/intro/privacy また、Google、YouT

7 users
inaz2.hatenablog.com
Raspberry Piに市販のUSBチューナーを接続して、FMラジオを受信してみる。 また、受信している電波の周波数スペクトルを表示してみる。 環境 Raspberry Pi 3 (Raspbian Jessie Lite) $ uname -a Linux raspberrypi 4.1.19-v7+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l GNU/Linux $ cat /etc/os-release PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)" NAME="Raspbian GNU/Linux" VERSION_ID="8" VERSION="8 (jessie)" ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/"

次のページ