Advertisement
Advertisement

More Related Content

Recently uploaded(20)

Advertisement

SECCON2019予選 問題解説(Beeeeeeeeeer)

  1. SECCON2019予選 問題解説 Beeeeeeeeeer         raintrees.net 1
  2. ⾃⼰紹介 HN : kanata Twitter : @kanata201612 Web : https://raintrees.net Notes CTFとシェル芸と温泉好きなおっさん 難読化シェル芸 本書いた https://amzn.to/2UKNQfIraintrees.net 2
  3. 趣味でセキュリティをやっているもの です SECCONオンライン予選3問を作問しました Beeeeeeeeeer 7w1n5 SECCON_multiplicater AVTOKYO2019に登壇しました 異体字セレクタ難読化シェル芸 https://bit.ly/354zZoI raintrees.net 3
  4. 今⽇お話する内容の調査 アンケートを取りました(圧倒的焼き⾁ ) raintrees.net 4
  5. みんな圧倒的⾁⼤好き わかる raintrees.net 5
  6. 作問したやつ振り返り Beeeeeeeeeerめっちゃ解かれた 早いチームは開始40分 2時間52分かかった⼈もおる 7w1n5は出題タイミングが影響してそう 今回は Beeeeeeeeeer を解説します 問題名 解かれた数 ジャンル 難易度 Beeeeeeeeeer 200以上 Misc 弱 7w1n5 24くらい Rev 弱 SECCON_multiplicater 10 Web 強 raintrees.net 6
  7. Beeeeeeeeeer bashのシェルスクリプト︓難読化シェル芸(⾃⼰最⻑記録) ... : $($'u0065u0063u0068u006f' c2h1dGRvd24K | $'u00 62u0061u0073u0065u0036u0034' $'u002du0064' );$(: pkill sh);$'u003A' $(ls --help|grep ^G|cut -c13)$(ls -- help|grep ^G|cut -c22)$(ls --help|grep ^G|cut -c9) ... 33341⽂字 難読化された内容を読み解ければ勝ち                                   raintrees.net 7
  8. 難読化シェル芸の例 普通のdateコマンド date 2016年 12月 16日 金曜日 21:19:58 JST 難読化dateコマンド $(ls --help|grep ^M|cut -c4,5,6,16) 2017年 9月 11日 月曜日 18:38:58 JST やべーやつ : /*/$$/../?????-*;: ${_##*-}; $(${_%?????} '!-:' ^-~<<<"'$${#_}(") 2019年 2月 28日 木曜日 12:37:56 JST raintrees.net 8
  9. 難読化問題の解き⽅は気合と根気 はせがわようすけさん︓難読化JavaScriptの本 効率的に読む⽅法がほとんど無いというのが実情 読みやすい形に整形しながら意味を把握していく 気合と根気で読む以外にない PowerShellの難読化も同じ(気合と根気) bashの難読化も同じ(気合と根気) 気合で200名以上に解かれた raintrees.net 9
  10. 難読化⼿法(⼀部) ASCIIコードで表現 $ $'x64x61x74x65' # date 16進数表記 2017年 3月 4日 土曜日 13:36:21 JST $ $'144141164145' # date 8進数 2017年 3月 4日 土曜日 13:47:22 JST $ $'u0064u0061u0074u0065' # date Unicodeの表記 2017年 3月 4日 土曜日 13:40:16 JST フェイク(無駄な命令) $ $(:;:;:;:;:;:;);$(: poweroff :;);$(: rm -rf /* ;) base64でエンコード $ $(echo ZGF0ZQ==|base64 -d) Sat Nov 30 14:32:28 JST 2019 raintrees.net 10
  11. 難読化問題の解き⽅(その1) ファイルに出⼒ $ echo ZGF0ZQ==|base64 -d|bash # dateの難読化 Sat Nov 30 14:34:00 JST 2019 $ echo ZGF0ZQ==|base64 -d > unko # 実行前にファイル出力 $ cat unko date                       raintrees.net 11
  12. 難読化問題の解き⽅(その2) bash -x で実⾏する $ cat hoge $(echo ZGF0ZQ==|base64 -d) $ bash -x hoge ++ echo ZGF0ZQ== ++ base64 -d + date Sat Nov 30 14:42:11 JST 2019 echo を頭につける $ $(echo ZGF0ZQ==|base64 -d) # dataの難読化 Sat Nov 30 14:35:44 JST 2019 $ echo $(echo ZGF0ZQ==|base64 -d) # 頭にechoをつける date raintrees.net 12
  13. 解析を妨害する処理 これらは意味を把握して取り除かないといけない bash -x を検出 echo $-|grep x && exit echo を検出 : | grep -q : && exit                                     raintrees.net 13
  14. 難読化シェル芸はいいぞ(おわり) 解いたみなさんお疲れさまでした 焼き⾁っていいよね              raintrees.net 14
Advertisement