つくばなう 2014年5月1日 No Comments

お久しぶりです。ゆったんです。

先日、長年住んでいた山形県を離れ、筑波大学に進学するため茨城県つくば市に引っ越しました。
風邪ひきました()

引っ越してから大体一ヶ月が経ち、忙しさも落ち着いてきたけれど、
まだ慣れてない部分もある。つくばの水が飲めない()

…山形は水が美味しかった。

自分の意思でこっちに飛び出してきたのに、結構山形に帰りたさがある。
いわゆるホームシックかな。
山形まではわりと距離があって、金銭的にも帰れる機会はあまりないのでつらい。

つくばに引っ越してから、いろんな友人ができて、いろんな話を聞けて、すごい楽しいです。
山形にいた時よりも、いきいきとしている気がする。

そんなわけで、大学生活初めの1ヶ月はとても充実していた。
むしろ、大学生活の1/48がもう終わっちゃったんだなぁと思うと寂しい。

48ヶ月って結構短いので、いろんなことにチャレンジしたいです。

フル単するぞ~~~~~~~~~~~(白目)

RuCTF Quals 2014 2014年3月11日 No Comments

We joined RuCTF as wasamusume at NetAgent co.
Thanks  NetAgent  for lending us room !

Adding to default mekmbers , op, tpdn,  haru joined with us.

Recon

We could login tereglam as mpiada balalaykina.
Then We realized we can change names , and delete messages!

samuragoutin

blocked

In IRC, there  were some people who belive the flag we camouflaged correct .
We enjoyed seeing it ! HAHAHA ..Sorry 🙂

SYN/CHOKU DAMEDESU

SECCON 2013 CTF オンライン予選 2014年1月26日 No Comments

どうも、ゆったんです。
いつものwasamusumeのメンバーにzipさんを加えた、ほぼフルメンバーでSECCON 2013 CTFオンライン予選に参加しました。
非常に楽しかった。

では、とりあえずNetwork_Web300の解説します。(ほかについては近々追加する予定)


 

q

問題として、上のような画像ファイルが渡される。
カテゴリを考えると、おそらく何かしらのデータがこのjpgファイル内に隠されているのだろうとめどをつけて
バイナリエディタに投げ込んで目grepしてみると、tcpdumpファイルのヘッダが見つかるので抜き出す。

Hex_SECCON_Net300

切り取ったtcpdumpファイルをWiresharkに投げ込んでみると、逆引きしていることがわかる。

wireshark_SECCON2013WEB_Net300_thumb

チームメイトが逆引きしてFlagをSubmitしたのですがAcceptされず、私も逆引きしてみると、
Acceptされなかったのは”.”が抜けてたのが原因だとわかった。

$ nslookup 10.95.133.134 133.242.55.252

とnslooupを叩いて逆引きをした結果、下のような文字列が返される。

You.G0t.a.Hidd3n.m3ss4g3.1n.Th15.DNS.

というわけで
答え: You.G0t.a.Hidd3n.m3ss4g3.1n.Th15.DNS.

 

インラインアセンブラ 2013年10月20日 No Comments

 

 

Cのなかに__asm__()とかでアセンブリ記述するアレがインラインアセンブラなわけですが、

とあるイケメンの人のやろうとしていたことを数人でやっていたのけれども

なかなかうまくいかなかったのでかいてみる。

 

アセンブリのコード

.intel_syntax noprefix
.text
.global main

main:
        xor eax,eax
        push eax
        push 0x64726c6f
        push 0x77206f6c
        push 0x6c656800
        mov ecx,esp
        mov eax,4
        mov ebx,1
        mov edx,14
        int 0x80

        mov eax,1
        dec ebx
        int 0x80

見ての通り、hello world という文字列を出力するアセンブリのコード。

これをインラインアセンブリで書いてみると、

int main(){
  __asm__(
          ".intel_syntax noprefix   nt"
          ".global func             nt"
          "func:                    nt"
          "xor eax,eax              nt"
          "push eax                 nt"
          "push 0x64726c6f          nt"
          "push 0x77206f6c          nt"
          "push 0x6c656800          nt"
          "mov ecx,esp              nt"
          "mov eax,4                nt"
          "mov ebx,1                nt"
          "mov edx,14               nt"
          "int 0x80                 nt"

          "mov eax,1                nt"
          "dec ebx                  nt"
          "int 0x80                 nt"
          );
  return 0;

}

まぁんで、普通にコンパイルするなら、

$ gcc hello.c -masm=intel

って指定するんだけど、

".intel_syntax noprefix   nt"

って記述してるわけだし、 -masm=intel つけなくてもコンパイルできるんじゃね?って話。

実際、-masm=intel を指定しない場合で、.intel_syntax noprefix と記述しているときには

$ gcc hello.c    
/tmp/ccOPOda9.s: Assembler messages:
/tmp/ccOPOda9.s:34: Error: no such instruction: `movl $0,%eax'
/tmp/ccOPOda9.s:35: Error: no such instruction: `popl %ebp'

記述されていない時には、

$ gcc hello.c      
hello.c: Assembler messages:
hello.c:4: Error: too many memory references for `xor'
hello.c:9: Error: too many memory references for `mov'
hello.c:10: Error: too many memory references for `mov'
hello.c:11: Error: too many memory references for `mov'
hello.c:12: Error: too many memory references for `mov'
hello.c:13: Error: operand size mismatch for `int'
hello.c:14: Error: too many memory references for `mov'
hello.c:15: Error: no instruction mnemonic suffix given and no register operands; can't size instruction
hello.c:16: Error: operand size mismatch for `int'

っていうように、明らかに .intel_syntax noprefix という記述は反映されてるっぽい。

コンパイルエラーみてると、なんか内部的に intel表記からAT&T表記に

コンバートしてる感もあるんだけど、これって、-masm=intel を付けないでも

どうにかすればコンパイルできる気はするんだけど、わからない。

 

だれか知っている人いれば教えていただけると嬉しいです。

 

gccの仕様でできないとかそういうのだったりするのかな….

追記:

こおしいず氏が解決してくれた。

gccでinline assemblyしたとき – cookies.txt               .scr http://cookies.hatenablog.jp/entry/2013/10/21/203345

gdbでbreakかければ/tmp/以下のファイル消える前に

見れると思ったけどunlinkにかけるべきだった。

技術力不足で辛い。

ありがとう!

筑波大学 情報学群情報科学類AC入試において合格しました。 2013年10月18日 No Comments

 

先日、筑波大学 情報学群情報科学類AC入試を受験し、合格することが出来ました。

思い返せば、ここ2年間は、たくさんの経験をし、たくさんの人と出会い、

現実なのだけど、夢のような時間を過ごしてきました。

 

この合格は、沢山の人々からの贈り物だと思っています。

本当にありがとうございます。

 

 

今後は、受験を控える同級生のサポートをしながら、

自分自身もセンター試験に向けて、また情報系の勉強なども頑張っていこうと思います。

 

今後の私を、温かい目で見てあげてください。

 

 

 

 

wishlistリスト受け付けていますw よろしくおねがいします。

Amazon Wishlist

セキュリティキャンプ中央大会2013に参加してきた!(テキスト版) 2013年8月24日 3 Comments

 

 

 

ってことでみんなが読めるようにテキスト版です。

前回のはキャンプ生じゃないと内容もわかりづらかったと思うので、

文章も直しています。

 

先日8/13~17に、千葉県千葉市にあるクロスウェーブ幕張で行われた、

セキュリティ・キャンプ中央大会2013に参加してきましたよっ

 

Read the rest of this entry »

セキュリティキャンプ2013に参加してきた!(暗号版) 2013年8月18日 No Comments

 

追記:テキスト版書きました。

セキュリティキャンプ中央大会2013に参加してきた!(テキスト版)
 

とりあえず暗号化して載せます。

Softwareの人なら気づいてくれると思う。

そうでなくてもPDFの中みてみるとたぶんわかる。

ちなみに問題ファイルはPDFではない。

problem

 

ヒント:PDFの中のデータの一部は何かでエンコードされてるよね

 

頂いたものについては写真を載せます。

 

頂いたもの

 

Network系のものが多いかと思いますが、ぼくはSoftwareです。

提供してくださった方々、本当にありがとうございます。

 

 

 

後日、ちゃんと読めるものをブログに掲載します。

ちょっと手を加えると思う。

高専カンファレンス sendai2 に参加してきた! 2013年8月7日 No Comments

 

先日8月6日に行われた、高専カンファレンス sendai2 に参加してきました。

今回のは、仙台高専が主導となって開催されたものです。

http://kosenconf.jp/?072sendai2

 

やぎにいちゃんに誘われて参加したのですが、

まわりが高専生ばかりでめっちゃびびってたりしてましたが、

なんというか、会場の雰囲気とか、みんなのノリとか、

本当に楽しかったです。ああいう雰囲気は本当に好きです。

 

えっと、結構印象に残ってるのは、

このかさんのフランスステイの話、双葉さんのセーラー服(ぉぃ)、

なおさんのアマチュア無線のお話ですね。

 

フランスステイの話を聞いていて、このかさんすげーって思った。

僕も機会があれば海外に行って、異文化を楽しんだりしてみたいです。

 

セーラー服、え、まじかwwwwって感じでめっちゃ面白そうで期待していたのですが、

期待を裏切らない面白さでしたw

(双葉さんの顔文字見てて、ちょっとておくれ感を感じたり(いい意味ですw

あと高専についての話もしていたのですが、

なんというか、高専、やっぱり楽しそうだなって。

高専いかなかったことを後悔はしていませんが、

羨ましさを感じました。

 

 

 

(F^o^)<じゃあやるか~~~~~~~~~~~~!

 

(特に意味はないです、ええとカンファ見た人ならわかると思いますw

 

 

最後になおさんのアマチュア無線、すごいかっこいいと思えたし、

すごい興味をもちました。大学入ったらやってみたいです。

あとは、仙台高専のアンテナの数にびっくりしましたね。。。

さすが元電波高専って感じで、圧倒されました。。。

 

ってかみなさん、アマチュア無線の資格持ってる人多いですね(うらやましい

 

 

あ、そういえば僕もLTしてきました。一応載せておきます。

 

[slideshare id=25018567&doc=kosenconfsendai2lt-130807051943-phpapp02]

 

でもで使ったプログラムのコードも載せます。汚いです。脆弱性モリモリです。

ちなみにFedora 17 x86で、gccでコンパイルしました。

#include<stdio.h>
#include<stdlib.h>

int main(){

  char buf[256];
  char msg[128];

  fgets(msg,128,stdin);

  snprintf(buf, sizeof(msg), "echo %s ",  msg);

  system(buf);

  return 0;
}

OSコマンドインジェクションしました。

ちなみにその時のフラグは、

                                                                                                                                  
 RkxBR19HZW5naGlzS2hhbg==

えっと、base64でデコードしてあげると、

FLAG_GenghisKhan

 

です。(ここで笑いがとれてよかったw
あと、当日の質問への返答で、ちょっとここで補足しておきます。

base64のことを当日は暗号技術云々といってしまいましたが、正しくは

[NOTE]

Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。MINEによって規定されていて、7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。具体的には、A–Z, a–z, 0–9 までの62文字と、記号2つ (+ , /) 、さらにパディング(余った部分を詰める)のための記号として = が用いられる。この変換によって、データ量は4/3(約133%)になる。また、MIMEの基準では76文字ごとに改行コードが入るため、この分の2バイトを計算に入れるとデータ量は約137%となる。

[/NOTE]

引用:wikipedia

 

あと、CTFはやっぱりLinuxでやるべきなのかという質問について、

必ずしもそういう必要はなく、実際にwindows使ってる人もたくさんいます。

webな問題であれば、ブラウザさえあれなどうにかなります。

僕自身はPCのスペック上、Linuxだけでやってますが、

windowsの上に仮想マシンでLinuxを動かす、というのも全然問題ないです。

ただしバイナリ問題では、windows用のバイナリを渡されれば、(wine等を使わなければ)Linuxでは動かせませんし、

逆もしかりです。

どちらの環境も用意するのが、いいと思います。

あとはアーキテクチャ(x86とかx64とかARMとか)でも実行可能かどうかは変わるので、

そこも注意です。

(最近はx64のバイナリが多いので、x64のwindowsとかLinuxをセットアップしたほうが良さそう

ARMに関しては、QEMUなどの仮想マシンを使いましょう。

 

ってことで、みなさんもCTFしてみてくださいw

 

 

最後に、非常に楽しかったです。

運営の方々、参加者の方々、本当にありがとうございました。

SecurityCamp2013 SoftwareSecurityClassに参加します! 2013年6月20日 No Comments

 

 

SecurityCamp2013 SoftwareSecurityClassへの参加が決まりました!

 

選考結果が明日送られてくると聞いていたのですが、

Twitterみたらみんなが受かった!とかいってるのを見て、

ドキドキしながら確認してみると、

SecurityCamp事務局からメールが何通か届いていて、

「もしかして…!!」

とドキドキしながら開いたら、合格通知がありました。

 

いまでもその時のドキドキ感とうれしさを抑えきれませんw

 

そういえば、同じwasamusumeのメンバーのあたがわさんやこおしいず氏も、
チューターとして参加するので楽しみ。

なんこつちゃんともまた会えるみたいだし、本当に楽しみです。

 

 

 

まずは、キャンプに向けて、もっともっと学んでいきたいです。

そして、応募用紙に書いた、自分の目標が達成できるような糸口を見つけられるよう、

キャンプでも頑張って行きたいと思います。

 

キャンプに参加する皆さん、よろしくお願いします。

また、今までお世話になった方々にも感謝しつつ、今後とも頑張っていきます。

バブルソートを実装してみた。 2013年5月21日 No Comments

 

 

久しぶりにプログラミングネタ書いてみます。

 

https://twitter.com/0x00e6/status/336612233138282497

 

なんこつちゃんがこんなことをいってた。

…バブルソートってなんだ…?

 

[NOTE] バブルソート

バブルソート (bubble sort) は、ソートのアルゴリズムの一つ。隣り合う要素の大小を比較しながら整列させること。最悪計算時間がO(n2)と遅いが、アルゴリズムが単純で実装が容易なため、また並列処理との親和性が高いことから、しばしば用いられる。安定な内部ソート。基本交換法、隣接交換法ともいう。(単に交換法と言う場合もある)

引用:Wikipedia

[/NOTE]

 

というわけで、早速書いてみた。もちろんCで実装。

 

#include<stdio.h>

int main(){

  int num,i,j,tmp;
  int x[num];

  puts("Put numbers you want to sort.");
  scanf("%d",&num);

  for(i = 0;i < num;++i){
    //読み込み
    scanf("%d",&x[i]);
  }

  for(i = 0;i < num;++i){
    //後ろからチェックしていく 
    for(j = num-1;j > i;--j){
      if(x[j] < x[j-1]){
        //交換
        tmp = x[j-1];
        x[j-1] = x[j];
        x[j] = tmp;
      }
    }
  }

    for(i = 0;i < num;++i){
      printf("%d ",x[i]);
    }

    puts("nSorting is done.");
    return 0;
}

 

ささっとかいたので、ちょっとアレかもしれないです。

昇順にソートしてるけど、ソートしてる時の処理の、

if(x[j] < x[j-1]) を if(x[j] > x[j-1])

とすれば降順になります。

 

ソートたのしいですね!(ぁ