WhiteHat CTF 2016 Writeup

WhiteHat CTF 2016にTeam:Harekazeの一員として参加していました。順位で18位で800pts取得、そのうちの自分が解いた300ptsのwriteupです

misc200pts(名前忘れた)

イラストロジックの問題SECCON Online CTF 2015に似たような問題あったなー...

イラストロジックのオンラインソルバ強力なQRデコーダを使います。

イラストロジックは複数解がありますが、パズルの数も3つなのでスクリプトを組まずに人力でやりました。

1つめからはN0N

2つめからはOGR

3つめからはAM

ということでWhiteHat{sha1(N0NOGRAM)}が答えになる

flagはWhiteHat{7d2c0e2d951e70c482f98531c82baeb512128adf}

Nem Ran(Reverse Engineering 100pts)

zipを解凍すると.pycファイルが出て来る。pycはpythonバイナリコード?なのでディスアセンブルする必要がある

ggrといい感じのディスアセンブルコードが出て来る([ももいろテクノロジーさん}(http://inaz2.hatenablog.com/entry/2016/10/10/131358)神)

# http://nedbatchelder.com/blog/200804/the_structure_of_pyc_files.html
import dis, marshal, struct, sys, time, types

def show_file(fname):
    f = open(fname, "rb")
    magic = f.read(4)
    moddate = f.read(4)
    modtime = time.asctime(time.localtime(struct.unpack('I', moddate)[0]))
    print "magic %s" % (magic.encode('hex'))
    print "moddate %s (%s)" % (moddate.encode('hex'), modtime)
    code = marshal.load(f)
    show_code(code)

def show_code(code, indent=''):
    print "%scode" % indent
    indent += '   '
    print "%sargcount %d" % (indent, code.co_argcount)
    print "%snlocals %d" % (indent, code.co_nlocals)
    print "%sstacksize %d" % (indent, code.co_stacksize)
    print "%sflags %04x" % (indent, code.co_flags)
    show_hex("code", code.co_code, indent=indent)
    dis.disassemble(code)
    print "%sconsts" % indent
    for const in code.co_consts:
        if type(const) == types.CodeType:
            show_code(const, indent+'   ')
        else:
            print "   %s%r" % (indent, const)
    print "%snames %r" % (indent, code.co_names)
    print "%svarnames %r" % (indent, code.co_varnames)
    print "%sfreevars %r" % (indent, code.co_freevars)
    print "%scellvars %r" % (indent, code.co_cellvars)
    print "%sfilename %r" % (indent, code.co_filename)
    print "%sname %r" % (indent, code.co_name)
    print "%sfirstlineno %d" % (indent, code.co_firstlineno)
    show_hex("lnotab", code.co_lnotab, indent=indent)

def show_hex(label, h, indent):
    h = h.encode('hex')
    if len(h) < 60:
        print "%s%s %s" % (indent, label, h)
    else:
        print "%s%s" % (indent, label)
        for i in range(0, len(h), 60):
            print "%s   %s" % (indent, h[i:i+60])

show_file(sys.argv[1])

これを使ってディスアセンブルする。

$ python show_crack.py re100.pyc

magic 03f30d0a
moddate 26462458 (Thu Nov 10 19:04:22 2016)
code
   argcount 0
   nlocals 0
   stacksize 5
   flags 0040
   code
      6400008400005a00006401008400005a01006402008400005a0200640300
      8400005a03006404008400005a0400798b016505006405008301005a0600
      6406005a07006700005a0800784700650900640600650a00650600830100
      640700830300445d2d005a0b00650600650b00650b0064070017215a0c00
      6508006a0d00650c006a0e00640800830100830100017161005765010065
      0f0065080064060019640900830200640a008302005a1000650200650f00
      650800640b0019640900830200640c008302005a1100650100650f006508
      00640d0019640900830200640e008302005a1200650200650f0065080064
      0f00196409008302006407008302005a1300650100650f00650800640700
      196409008302006410008302005a1400650200650f00650800640c001964
      0900830200640f008302005a1500650300650f0065080064100019640900
      830200640d008302005a16006510006411006b020072b201651100641200
      6b020072b2016512006413006b020072b2016513006414006b020072b201
      6514006415006b020072b2016515006416006b020072b201651600641700
      6b020072b20164180047486e05006419004748576e130001010164190047
      48651700830000016e010058641a0053
  1           0 LOAD_CONST               0 (<code object _ror at 0x101ca7d30, file "C:\Users\AutoBot\Desktop\deWhiteHat\re100.py", line 1>)
              3 MAKE_FUNCTION            0
              6 STORE_NAME               0 (_ror)

  5           9 LOAD_CONST               1 (<code object <lambda> at 0x101ca7830, file "C:\Users\AutoBot\Desktop\deWhiteHat\re100.py", line 5>)
             12 MAKE_FUNCTION            0
             15 STORE_NAME               1 (__ROR8__)

  6          18 LOAD_CONST               2 (<code object <lambda> at 0x101ca79b0, file "C:\Users\AutoBot\Desktop\deWhiteHat\re100.py", line 6>)
             21 MAKE_FUNCTION            0
             24 STORE_NAME               2 (__ROR4__)

  7          27 LOAD_CONST               3 (<code object <lambda> at 0x101ca7ab0, file "C:\Users\AutoBot\Desktop\deWhiteHat\re100.py", line 7>)
             30 MAKE_FUNCTION            0
             33 STORE_NAME               3 (__ROR2__)

  8          36 LOAD_CONST               4 (<code object <lambda> at 0x101ca7b30, file "C:\Users\AutoBot\Desktop\deWhiteHat\re100.py", line 8>)
             39 MAKE_FUNCTION            0
             42 STORE_NAME               4 (__ROR1__)

  9          45 SETUP_EXCEPT           395 (to 443)

 10          48 LOAD_NAME                5 (raw_input)
             51 LOAD_CONST               5 ('Enter key: ')
             54 CALL_FUNCTION            1
             57 STORE_NAME               6 (key)

 11          60 LOAD_CONST               6 (0)
             63 STORE_NAME               7 (count)

 12          66 BUILD_LIST               0
             69 STORE_NAME               8 (ret)

 13          72 SETUP_LOOP              71 (to 146)
             75 LOAD_NAME                9 (range)
             78 LOAD_CONST               6 (0)
             81 LOAD_NAME               10 (len)
             84 LOAD_NAME                6 (key)
             87 CALL_FUNCTION            1
             90 LOAD_CONST               7 (4)
             93 CALL_FUNCTION            3
             96 GET_ITER            
        >>   97 FOR_ITER                45 (to 145)
            100 STORE_NAME              11 (i)

 14         103 LOAD_NAME                6 (key)
            106 LOAD_NAME               11 (i)
            109 LOAD_NAME               11 (i)
            112 LOAD_CONST               7 (4)
            115 BINARY_ADD          
            116 SLICE+3             
            117 STORE_NAME              12 (a)

 15         120 LOAD_NAME                8 (ret)
            123 LOAD_ATTR               13 (append)
            126 LOAD_NAME               12 (a)
            129 LOAD_ATTR               14 (encode)
            132 LOAD_CONST               8 ('hex')
            135 CALL_FUNCTION            1
            138 CALL_FUNCTION            1
            141 POP_TOP             
            142 JUMP_ABSOLUTE           97
        >>  145 POP_BLOCK           

 18     >>  146 LOAD_NAME                1 (__ROR8__)
            149 LOAD_NAME               15 (int)
            152 LOAD_NAME                8 (ret)
            155 LOAD_CONST               6 (0)
            158 BINARY_SUBSCR       
            159 LOAD_CONST               9 (16)
            162 CALL_FUNCTION            2
            165 LOAD_CONST              10 (7)
            168 CALL_FUNCTION            2
            171 STORE_NAME              16 (b1)

 19         174 LOAD_NAME                2 (__ROR4__)
            177 LOAD_NAME               15 (int)
            180 LOAD_NAME                8 (ret)
            183 LOAD_CONST              11 (1)
            186 BINARY_SUBSCR       
            187 LOAD_CONST               9 (16)
            190 CALL_FUNCTION            2
            193 LOAD_CONST              12 (5)
            196 CALL_FUNCTION            2
            199 STORE_NAME              17 (b2)
(snip)

26         342 LOAD_NAME               16 (b1)
            345 LOAD_CONST              17 (16717361816810737874L)
            348 COMPARE_OP               2 (==)
            351 POP_JUMP_IF_FALSE      434
            354 LOAD_NAME               17 (b2)
            357 LOAD_CONST              18 (2737455883L)
            360 COMPARE_OP               2 (==)
            363 POP_JUMP_IF_FALSE      434
            366 LOAD_NAME               18 (b3)
            369 LOAD_CONST              19 (6845471433611232304L)
            372 COMPARE_OP               2 (==)
            375 POP_JUMP_IF_FALSE      434
            378 LOAD_NAME               19 (b4)
            381 LOAD_CONST              20 (4120053589L)
            384 COMPARE_OP               2 (==)
            387 POP_JUMP_IF_FALSE      434
            390 LOAD_NAME               20 (b5)
            393 LOAD_CONST              21 (15852670688363919553L)
            396 COMPARE_OP               2 (==)
            399 POP_JUMP_IF_FALSE      434
            402 LOAD_NAME               21 (b6)
            405 LOAD_CONST              22 (1273644554)
            408 COMPARE_OP               2 (==)
            411 POP_JUMP_IF_FALSE      434
            414 LOAD_NAME               22 (b7)
            417 LOAD_CONST              23 (23327)
            420 COMPARE_OP               2 (==)
            423 POP_JUMP_IF_FALSE      434

とこんな感じのコードが出て来る。これを見ると入力したkeyを4個ずつに分割して、それに対してROR8等の計算をした結果が16717361816810737874L等と一緒になればいいらしい。

ROR8等の関数も下の方に記述されており。

   consts
      code
         argcount 3
         nlocals 3
         stacksize 5
         flags 0043
         code
            7c00006401007c02001364020018407c01007c0200163f7c00007c02007c
            01007c020016183e6401007c02001364020018404253
  2           0 LOAD_FAST                0 (val)
              3 LOAD_CONST               1 (2)
              6 LOAD_FAST                2 (bit_size)
              9 BINARY_POWER        
             10 LOAD_CONST               2 (1)
             13 BINARY_SUBTRACT     
             14 BINARY_AND          
             15 LOAD_FAST                1 (bits)
             18 LOAD_FAST                2 (bit_size)
             21 BINARY_MODULO       
             22 BINARY_RSHIFT       

  3          23 LOAD_FAST                0 (val)
             26 LOAD_FAST                2 (bit_size)
             29 LOAD_FAST                1 (bits)
             32 LOAD_FAST                2 (bit_size)
             35 BINARY_MODULO       
             36 BINARY_SUBTRACT     
             37 BINARY_LSHIFT       
             38 LOAD_CONST               1 (2)
             41 LOAD_FAST                2 (bit_size)
             44 BINARY_POWER        
             45 LOAD_CONST               2 (1)
             48 BINARY_SUBTRACT     
             49 BINARY_AND          
             50 BINARY_OR           
             51 RETURN_VALUE        
         consts
            None
            2
            1
         names ()
         varnames ('val', 'bits', 'bit_size')
         freevars ()
         cellvars ()
         filename 'C:\\Users\\AutoBot\\Desktop\\deWhiteHat\\re100.py'
         name '_ror'
         firstlineno 1
         lnotab 00011701
      code
         argcount 2
         nlocals 2
         stacksize 4
         flags 0043
         code 7400007c00007c010064010083030053
  5           0 LOAD_GLOBAL              0 (_ror)
              3 LOAD_FAST                0 (val)
              6 LOAD_FAST                1 (bits)
              9 LOAD_CONST               1 (64)
             12 CALL_FUNCTION            3
             15 RETURN_VALUE        
         consts
            None
            64
         names ('_ror',)
         varnames ('val', 'bits')
         freevars ()
         cellvars ()
         filename 'C:\\Users\\AutoBot\\Desktop\\deWhiteHat\\re100.py'
         name '<lambda>'
         firstlineno 5
         lnotab 

2,3のところがROR8やROR4で呼び出している_ror関数、その後5,6,7,8とROR8,ROR4,ROR2,ROR1の関数のディスアセンブルした結果が表示されている。これらをpythonのコードになおしてみるとこうなる。

def _ror(val,bits,bit_size):
        a = ((2 ** bit_size - 1) & val) >> (bits % bit_size)
        b = val << (bit_size - (bits % bit_size))
        return a | (b & (2 ** bit_size - 1))

def __ror8(val,bits):
        return _ror(val,bits,64)

def __ror4(val,bits):
        return _ror(val,bits,32)

def __ror2(val,bits):
        return _ror(val,bits,16)

def __ror1(val,bits):
        return _ror(val,bits,8)

print('Enter key: ')
key = raw_input()
count = 0
ret = []
for i in range(0,len(key),4):
        a = key[i:i+4]
        ret.append(a.encode('hex'))

b1 = __ror8(int(ret[0],16),7) 
b2 = __ror4(int(ret[1],16),5)
b3 = __ror8(int(ret[2],16),8)
b4 = __ror4(int(ret[3],16),4)
b5 = __ror8(int(ret[4],16),6)
b6 = __ror4(int(ret[4],16),3)
b7 = __ror2(int(ret[4],16),2)
b1a = 16717361816810737874L
b2a = 2737455883L
b3a = 6845471433611232304L
b4a = 4120053589L 
b5a = 15852670688363919553L
b6a = 127364455
b7a = 23327

&や|演算子が使われているので答えの数字から逆算は難しいと判断、しかしkeyを4つの値に分割しているのでbrute forceで解けそうだと思ったのでそのコードを書く。

from itertools import permutations
# brute force

def _ror(val,bits,bit_size):
  line_two = ((2 ** bit_size - 1) & val) >> (bits % bit_size)
  line_three_37 = val << (bit_size - (bits % bit_size))
  return line_two | (line_three_37 & (2 ** bit_size - 1))

def __ror8(val,bits):
  return _ror(val,bits,64)

def __ror4(val,bits):
  return _ror(val,bits,32)

def __ror2(val,bits):
  return _ror(val,bits,16)

def __ror1(val,bits):
  return _ror(val,bits,8)                                                                                                              

#print('Enter key: ')
#key = raw_input()
#count = 0
#ret = []
#for i in range(0,len(key),4):
# a = key[i:i+4]
# ret.append(a.encode('hex'))

b1a = 16717361816810737874
b2a = 2737455883
b3a = 6845471433611232304
b4a = 4120053589
b5a = 15852670688363919553
b6a = 127364455
b7a = 23327

text="ABCDEFGHIJKLMNNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz{}_"
lis = list(permutations(list(text),4))
print(len(lis))
print(__ror8(int("Whit".encode('hex'),16),7))
for i in range(len(lis)):
  b1 = __ror8(int("".join(lis[i]).encode('hex'),16),7)
# print(b1)
  if b1 == b1a:
    print("b1="+"".join(lis[i]))
    break

最初はこのコードでやっていた、しかしb6だけ復号できずに悩む。原因は同じ文字を使う可能性を考えずに順列を使っていたことだった。forの部分を4重のループを回すように変更したらb6も復号成功。b7に関しては最後なので長さを2から4まで変更して試した。

key=WhiteHat{D0_Y0u_Kn0w_R0Rl}になるので

WhiteHat{sha1(WhiteHat{D0_Y0u_Kn0w_R0Rl})}がflag

WhiteHat{e3924cda1894cbb7823b3e8405dceafff58dc90e}

終わりに

SECCONよりはチームの力になれた気がします。もっと力をつけたい。

AWSでNginxとPHP7.0の環境を用意する

はじめに

AWSRDBを用いた簡易なアプリを作成しろと大学の課題として出されたので、課題の前の環境設定についてまとめようと思いました。 Ubuntuでの設定のブログなり記事が見当たらなかった(日本語で)のでやってることは他のOSと変わらないんですがまとめておきます。 AWSインスタンス作成までは公式のページ参照してください。

AWSでNginxとPHPの設定をする

Nginxのインストール

$ ssh -i ~/.ssh/*******.pem ubuntu@[インスタンス名]
$ sudo apt-get update
$ sudo apt-get install nginx
$ sudo service nginx start

nginxをapt-getでインストールする前にapt-getのupdateを済ませないと最新版がふってきません。 これでnginxのインストールは終わりです。

Nginxの設定

ディレクトリの作成

サービスを公開するディレクトリを先に作ります。

「www」や「mysite」は適宜自分のディレクトリと読みかえて下さい。

最後にパーミッションを変更しておきます。

$ sudo mkdir www
$ cd www
$ sudo mkdir mysite
$ cd mysite
$ sudo vim index.html
$ cd
$ sudo chmod -R 755 www

Nginxのサーバ設定

Nginxの設定ファイルですが/etc/nginx/sites-availableにあります。

既にdefaultというファイルがありますが、これを直接いじるのではなくコピーして使用していきます。

$ cd /etc/nginx/sites-available
$ sudo cp default mysite

mysiteの設定ファイルを書き換えます rootのところはOSとしてUbuntuを指定した場合はubuntuになります。Ubuntu以外は適宜書き換えて下さい。 server_nameはAWSのパブリックDNSを参照してください。

$ sudo vim mysite

server {
        listen 80;
        listen [::]:80;
        root /home/ubuntu/www/mysite;
        index index.html index.htm;
 
        # Make site accessible from http://localhost/
        server_name *.amazonaws.com;
 
        location / {
 
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }
}

sites-availablesの設定内容を反映させるために、sites-enabledにシンボリックリンクを作ります。

$ cd ..
$ cd sites-enabled
$ sudo ln -s /etc/nginx/sites-available/mysite mysite

最後にnginx.serviceをリスタートします

$ sudo service nginx restart
もしくは
$ sudo systemctl restart nginx

エラーが出た場合

nginxのrestart時にエラーが出た場合

$ sudo service nginx restart
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

このような感じが出ると思います。

この時は/var/log/nginx/error.logを見るといいです。

$ less /var/log/nginx/error.log
2016/11/14 14:20:14 [emerg] 27680#27680: invalid number of arguments in "root" directive in /etc/nginx/sites-enabled/bulletin_board:41

となっていた場合構文エラーです。セミコロンがなかったりします。

$ less /var/log/nginx/error.log
2016/11/14 14:27:39 [emerg] 27786#27786: could not build server_names_hash, you should increase server_names_hash_bucket_size: 64

となっていた場合サーバの名前の長さが長すぎるということなので

$ sudo vim /etc/nginx/nginx.conf 
-- server_names_hash_bucket_size: 64
++ server_names_hash_bucket_size:128

上のような感じで適当な長さに編集すればエラー解決できます。

 PHP7.0の設定

php7.0の導入

PHP7.0の導入についてです。

PHP7が公開されてからしばらくたつので、特に指定しなくてもphp70をapt-getで入手できます。

$ sudo apt-get install php

指定してやる方法は下の方法でいいはずです。

$ sudo apt-get install php70
$ sudo apt-get install php7.0-fpm

php7.0をnginxで使えるようにする

/etc/nginx/sites-available/mysiteを上で編集しましたが、それに追加します。 デフォルトだとコメントアウトされています。

$ sudo vim /etc/nginx/sites-available/mysite

 location / {
 
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }
# 上がnginxの設定で書いた部分
# ここから下がphp7のための設定

location ~ \.php$ {
        
                fastcgi_pass unix:run/php/php7.0-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
                include fastcgi_params;
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php7.0-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php7.0-fpm:
        #       fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

このように設定したら、nginxをリスタートします

$ sudo service nginx restart

最初に作ったディレクトリにindex.phpを作ります。

$ cd
$ cd www/mysite
$ sudo vim index.php

<?php
phpinfo();
?>

アクセスしてphpinfoが表示されれば完成です。

Rabbit House Tea Party2016レポート

昨日、パシフィコ横浜で開催されたお茶会、ご注文はうさぎですか??Rabbit House Tea Party2016に参加してきたのでそのレポートをしたいと思います。

忘れないうちに書くので写真は後で

物販

自分は諸事情あって前日入りもしくは深夜便を取れなかったので、当日のんびりいきました。なので物販は売り切れがでるだろうと思いつつ行きました。

13:30くらいから並び始めて並んでる途中で法被が全部完売した。とかクリアファイル完売などの情報が入ってました。 実際に買えたのはパンフレット、ライブTシャツ、ペンライト、ミニタオル(リゼ)、タオルマフラー(高校生組)でした。(写真は後で)

前日の様子と見比べると当日のほうが法被などを多く取り揃えてるのかなって印象です。法被なりフルカラーTシャツが欲しい場合は遅くとも物販開始時には並んでおかないとなくなりそうな印象です。(事前物販とかあれば嬉しかったよね)

物販後

写真を取りつつ場内を巡ります。

魔法少女チノちゃんがいたり(写真は後で)

出張Rabbit Houseがあったり(写真は後で)

見どころはたくさんあります。

会場入場

自分は36列の席でした。少し遠いのでオペラグラスなりあったほうが見れる気はしましたが、ペンライトをよくふったりするのでそういう意味ではいらなかったです。次は前の席があたることを祈ります。

さて会場入場するとクラシックギターアレンジのごちうさの曲や、ノーポイッ!のクラシカルverが流れていて癒やされます。 あれが流れているならいつまでもあの空間にいれそうです。

イベントスタート

オープニング

キャストさんの自己紹介

上手に撮りましょう!速水SHOW!

MC:速水さん、種ちゃん

速水奨さんがお召し替えをしてその写真を撮りキャストさんの中で誰が一番うまく撮れたかを競う?イベントでした。

キャストさんたちが速水さんのスカートの中をとろうとがんばってました!!!

オリジナルストーリーアフレコ(タイトル忘れました)

ストーリー:おっきい会場でお茶会をするからその買い出しをしてる、ココア・シャロ・千夜とチノ・リゼ・マヤ・メグ、そしてRabbit Houseで店番をしてるモカと青山ブルーマウンテン先生のストーリーでした

リゼ先輩の教官モード好き......

ギャラクティかわいい選手権一回戦

MC:速水さん、しゅがりん

キャストの方々がチームに分かれてお題にあったかわいいことを競う?イベント

ラビット・ハウス チーム:あやねる、種ちゃん、そらまる、かやのん

フルール・ド・ラパン チーム:まややん、いのりん、りえしょん、はやみん

先鋒、次鋒、中堅、大将でのチーム戦でした!

先鋒戦

あやねる VS はやみん

お題:◯◯◯で寝ている彼をかわいく起こす

先攻:はやみん

お題:映画館で寝ている彼をかわいく起こす

はやみん「4Dのはやみさおりだよ〜!」

可愛い.....

後攻:あやねる

お題:雪山で寝ている彼をかわいく起こす

あやねる「奨く〜ん、起きて〜〜!寝ちゃダメだよ〜.....あ、死んだ」

まさかの起こさずに殺していくスタイル...あやねるかわいい

そして判定は

映画館で起こされるのを嫌った速水さん、だけれどかわいかったはやみん

死んでしまったけど愛する人の最後を看取ったあやねる

ということでドロー(個人的にははやみんが可愛かった)

次鋒戦

種ちゃん VS りえしょん

お題:◯◯◯で騒いでいる生徒をかわいく注意する

先攻:種ちゃん

お題:授業中で騒いでいる生徒をかわいく注意する

速水さん「あ、ピザの宅配の人?これ代金ね」

種ちゃん「授業中にピザとっちゃダメじゃない」

速水さん「これ先生にも、寿司もきた」

種ちゃん「私のもあるの?でもダメじゃないご両親のご飯があるんだから」

速水さん「僕起業してるから」

種ちゃん「職を失ったら雇ってください」

速水さん「いいよ!」

最後まで注意なんてなかった(種ちゃんの食べてる感じの声好き)

後攻:りえしょん お題:卒業式で騒いでいる生徒をかわいく注意する

りえしょん「私が園長先生だよ〜、こら速水くんめんこ投げるのをやめなさいタイムタイム」

速水さん「僕のお父さん、この園の理事長だよ」

りえしょん「園長先生は権力には屈しません!」

完璧なショートコントそして不可侵領域りえしょんさすが

確か結果は1点差で種ちゃんが勝ったはず

中堅戦

そらまる VS いのりん お題:◯◯◯で欲しいものをかわいくねだる

先攻:いのりん お題:イベント会場で欲しいものをかわいくねだる

いのりん「速水さんの財布の中身全部ポイしちゃお?」

速水さん「全部買い占めよう」

いのりん「だ・い・す・き」

俺(がっこうぐらしか.......かわいい)

後攻:そらまる お題:ブランド店で欲しいものをかわいくねだる

そらまる「ルイザブトンでグーバー、バッグが欲しいの〜」

速水さん「うーん」

そらまる「買って、買って、買って」(速水さんの周りを回り始める)

速水さん「よしじゃあ買ってあげよう!」

結果はいのりんが1301点でそらまるが1290+15点

大将戦

かやのん VS まややん

お題:◯◯◯でかわいくアピール

先攻:まややん

お題:新人オーディションでかわいくアピール

速水さん「さっきの子よかったな....内(不可侵領域)..なんだっけ忘れたからいっか」

まややん「(不可侵領域突入)あの〜私内田真礼って言うんですけど〜」

後攻:かやのん

お題:就職活動でかわいくアピール

かやのん「私色彩を操ることができるんです、試しにこの会場を私色に染めます!次はココア色に染めます!」

速水さん「でもうち墨作るとこなんだよね」

かやのん「白黒つけるなんて古いです、時代はカラーなんです!」

ギャラクティかわいい選手権二回戦

問. シャロちゃんがツッコミをした回数+ココアちゃんが叫んだ回数

ここのMADは最高でした。ヴェアアアアアのとこだけ全カットとか運営さすが!

答えは41回で一番近かったのは種ちゃんの45回でした。

これでRabbit Houseチームに36兆点がはいりギャラクティ可愛い選手権はラビットハウスチームが勝利!!

お悩み相談

りえしょんのお悩み

「犬の絵がうまくかけない」

速水さん「逆立ちをすると固定観念がなくなってかけるらしいよ」

はやみん「ほんとだ観客のみなさんも全然違うふうに見える〜」

いのりんのお悩み

「テンションがあげられない、楽しんでるのが伝わらない、目が悪い」

速水さん「目が悪いのはコンタクトとかあるけど、他2つは不可侵領域に弟子入りすればいいんじゃない?」

速水さんのお悩み

「愛猫がさびしがりやで顔をなめて起こしてきて寝不足です」

かやのん「速水さんの添い寝CDを聞かせましょう、私達も協力するんで」

ライブパート

  1. ノーポイッ!
  2. 出かけましょうと答えましょう
  3. ナマイキTiny Heart
  4. ナイショのはなしは夢の中で
  5. Rabbit Hole
  6. やきもち風味のカモミール
  7. ぴょん's ぷりんぷるん
  8. ときめきポポロン
  9. 本日は誠にラリルレイン

やきもち風味のカモミール、最高だったし前日に予習しておいてよかった.......

エンディング

発表がもりだくさんでした。

本日は誠にラリルレインはBru-lay,DVD6巻の特典として入る、キャラソング新作決定、ヴァイスシュヴァルツ発売決定、アニメ再放送(TOKYO MX日曜朝11時エンドカードポポロンじゃんけんは変更(名古屋民なので見れない辛い))、新作エピソード制作決定

そしてしゅがりんの誕生日が5/8ということでパシフィコ横浜5000人でのハッピーバースデーを歌う!!

なおしゅがりんは17歳になるそうです!

まややんと種ちゃんのハグとかあやねるのいのりんへのデコチューとかほんとによかった

感想

ごちうさは神!!