picoCTFにチャレンジ_no2

Web Exploitation JavaScrypt 40Point

 

該当WebページをChromeの開発ツールでソースコードを確認。

var key; // Global variable.

// Since the key is generated when the page // is loaded, no one will be able to steal it // by looking at the source! This must be secure!

function generateKey() {

var i = 1;

var x = 298;

var n = 5493;

while (i <= 25) { x = (x * i) % n; i++; }

key = "flag_" + Math.abs(x); }

generateKey();

// Encode the message using the 'key'

function encode() {

var input = $("#inputmessage").val();

var output = CryptoJS.AES.encrypt(input, key);

$("#outputmessage").val(output); }

上記のJavaScryptoを実行すればFlagが獲得できそうなことは判明したため、

下記の情報を参考にしながらJavaファイルを作成。ファイル名とClass名が異なっていたため、コンパイルエラーが発生したが、その点を修正し、 #javac Javascrypt.javaコンパイルを通し、 java Javascrypt にてFlagをGET。地道に努力してプログラムスキルを向上させないと・・・ 答えを見ながら試行錯誤しているがとても勉強になる!

(参考)URL

http://lynkos420.blogspot.jp/2014/11/javascrypt-40.html

picoCTFにチャレンジ_no1

PicoCTFとは:

米国カーネギーメロン大学が開発したセキュリティ人材を主眼に置いたオンラインで参加可能なCTF形式の教育コンテンツ。Web/ソフトウェア/フォレンジック/暗号/脆弱性を中心にコンテンツが準備されている。

 

XORの問題: Pythonを利用して暗号化されているデータの複合を行う問題

-----------------------------------------------------

from collections import Counter   ; 

frequency = Counter( )

with open('encrypted', 'r') as f:

    data = f.read()                                ;encrypted ファイルをすべて読み込み、dataに格納

    for ch in data:

        frequency[ch] += 1

c = frequency.most_common(10)[0][0]      ;most_commonメソッドを用いて、多い要素10個を取り出し

m = ' '

print (repr(c) + ' decrypts to ' + repr(m))     ; 特に本行は必要なし

def xor(input_data, key):        

    result = ""

    for ch in input_data:

        result += chr(ord(ch) ^ ord(key))        ;  "^" : 排他的論理和を示す

    return result

k = xor(c, m)

print (xor(data, k))

-----------------------------------------------------

 

[参考URL]

http://www.lifewithpython.com/2014/05/python-count-elements-in-lists.html

 

 

Python学習_その2

Python学習_その1の続きです。(そろそろ配列という言葉も登場し、挫折ポイントが登場してきました。)

 

【リストとタプル】:Perl の配列に相当するものとのこと。。

 ・リストやタプルとは?: Perl の配列に相当するもの。

  リスト:作成後に編集可能。 ※迷ったらリストにした方が良い。(?)

     (書き方): x = [1, 2, 3]

  タプル:最初に作成したものを後から変更ができない。

     (書き方): x = (1, 2, 3)

            ※尚コマンドを用いて、タプル→リストに変換することは可能。

 

【出力結果を改行せずに表示する方法】

・文字列「Hello」 と「Python」 を表示する場合、特に考慮せずに print すると改行ありとなってしまう。

  [改行ありのケース]

   for w in [ 'Hello', 'Python']        ==>  結果       Hello

                print (w)                                                      Python

  [改行なしのケース]

           for w in [ 'Hello', 'Python']       ==>  結果  Hello, Python

                 print w,            ←ここがポイント

・コメントを挿入する場合 

  #:この列がコメント列として認識される。

  「”」ダブルクウォーテーション or「 '」シングルクウォーテーション を

   3つ以上並べて書く。(始まりと終わりに)

 

【辞書 ( x ) を用いての表示方法】※辞書を用いるときは、下記のような条件に合致する件数を調べたい時に利用するとのこと。。まだイマイチ理解できていない orz..

------------------------------------------------------------------------

x = {'even':0, 'odd':0}      ## even, odd というキー

for i in [1,2,3,4,5]:

     print ('i=' +str(i))   ## 処理を確認するために入れた表示

           if i % 2 ==0:     ## i を2 で割った余りが 0 であるならば

           x['even'] += 1    ## 左記は、 x['even'] = x['even'] + 1  を意味する

           y = x['even']

           print ('y='+str(y))

     else:

           x['odd'] += 1

           z = x['odd']

           print ('z='+str(z))

print ('even=' + str(x['even']))

print ('even=' + str(x['odd']))

-------------------------------------------------- 

 

【勉強に利用したコンテンツ】

1. You Tube : Python 入門

    https://www.youtube.com/watch?v=FQabMlA5esM

2. 

Pythonで学ぶ 基礎からのプログラミング入門 (1) Pythonでプログラミングを学ぶ理由とは? | マイナビニュース

 

3. Pythonを勉強するための教材 

http://ww1.pep8-ja.readthedoc.org/ja/latest

 

 

 

 

攻略英語リスニング_Lesson33_Financial Crisis

[Word]

-Take out a mortage: 住宅ローンを組む

 (mortage:抵当、何かを抵当に入れること)

-Unscrupulous  (a): 無節操な、平気で悪事をする

  対義語: Scrupulous : 良心的な、誠実な

-prime rate : 優良顧客に対する最優遇の貸付金利

 subprime : 優良顧客には及ばない(通常の住宅ローン審査に通らないような人々向け)

- dreadnaught : 怖いもの知らず、勇敢な、 "dread" :恐れ、"naught": ゼロ

- eviction : 立ち退き

- foreclosure : 抵当流れ、差し押さえ

-greedy : よく深い

- rapacious : 肉食の、強欲な、 (類):greedy

- shady : 影(陰)の多い / 怪しげな    (参): shade : 陰

- irresponsible : 無責任な、 (対): responsible

- rickety (a) : ガタガタする、グラグラする、ぜい弱な

- credit crunch : 貸し渋り、金融引締め (crunch: 嚙み砕く、不足、引締め)

-plummet : 急落する

-bail out : 救い出す、保釈する、逃げる。例: Are you bailing out on me ? 私の元から去るつもり?

-ramification : (好ましくない)結果、影響

- sum up : 合計、要約すると

-power struggle : 権力闘争

 

[Repeat & look up]

 The company president quit suddenly, and what followed were power struggle and confusion.  

Python学習_その1

自分の目標であるプログラミングスキル向上に向けて、勉強を開始。ただしお金はかけれないため、YouTube を用いて勉強します。英語と同じですね・・ YouTubeを利用すれば毎日英語のシャワーを浴びることが可能です・・しかも無料で・・本当に便利な世の中ですね。

 

Python とは】

PythonPerl も共にスクリプト言語

PythonPerl と比べ文法にうるさいため、Publicにプログラムを共有するためには非常に適している。Perl は、自分用に利用するような使い分け方もあるとのこと。

・学習法としては、PythonまたはPerlのどちらかを決めて、深く勉強することが望ましいとのこと。

・Python2 とPython3 では文法が異なる。(例:Python2 : python test.py,  Python3: python3 test.py)

・条件文においては、Pythonは条件文中身のインデント「:」を用いないと構文エラーとなる。(Perlは関係なし)

・文字列を表す際は、シングルクウォーテーション(' )の利用が推奨されている。(ダブルクウォーテーション利用も可能だが。)

演算子の「+」は、文字列であれば文字列の結合が行え、数値であれば数値の和を求めることが出来る。

 

【勉強に利用したコンテンツ】

You Tube : Python 入門

https://www.youtube.com/watch?v=FQabMlA5esM

 

Yara Rule とは(セキュリティ)

 YARAとは、マルウェアの研究者たちのために作られた、マルウェアを検知・解析・分類するための、オープンソースのプログラム(Pythonベース)です。

基本機能としては、条件として指定した文字列やバイト列を、対象とするファイルやプロセスメモリのバイナリデータ上でスキャンし、指定した条件との合致があればそのスキャン結果を出力します。この文字列の条件は「正規表現」という柔軟な指定方法に対応しています。バイト列の条件に関しても、バイト数が不定のワイルドカードといった柔軟な指定が可能です。さらに、スキャン対象がPEファイルならば、特定インポート関数の有無や、PEヘッダ内の各項目の状況(格納値)を条件に指定、さらにはネット・レジストリ・ファイルへのアクセスという「ふるまい」も条件に指定してスキャンすることもできます。スキャンする条件のセットは「ルール」と呼ばれ、複数の条件を一度に指定し、一つのルールとしてその合致を判別させることも、さらに複数のルールを指定して一度にスキャンさせることも可能です。基本的に、ルールは文字列としてWindows ANSI(Shift-JIS)形式のテキストファイルに記述します。

 

一般的なルールでは、ルール名、タグ(必須ではない)、説明等の付属データ(必須ではない)、条件「strings」、合致状況「condition」を記述します。 

rule silent_banker : banker
{
    meta:
        description = "This is just an example"
        thread_level = 3
        in_the_wild = true

    strings:
        $a = {6A 40 68 00 30 00 00 6A 14 8D 91}
        $b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9}
        $c = "UVODFRYSIHLNWPEJXQZAKCBGMT"

    condition:
        $a or $b or $c
}

(Data Source)

http://yara.readthedocs.io/en/v3.5.0/

https://oss.sios.com/security/antivirus-security-20151215

http://virustotal.github.io/yara/

http://blog.macnica.net/blog/2014/11/post-fca5.html

http://www.k3.dion.ne.jp/~dt2/usamimihurricane/webhelp/_RESOURCE/MenuItem/another/anotherAboutYARA.html

 

ニュースで英会話_ Massive Data Breach from the "Panama Papers" issued on 4th-April

[Catch the Lead]:

US. Justice Department is now investigating what some are calling the biggest data leak in history, involving world leaders, and where the some of them are accused of hiding their money, in many cases in an effort to avoid taxes.

 

Justice Department :司法省

are accused of : 批難されている

 

[Word]

nondescript law firm : ありふれた法律事務所

shell corporation : 経営実態のない会社

ICIJ : the International Consortium of Investigative Journalists 国際調査報道ジャーナリスト連合(非営利団体、共同通信等も加盟している。)

tax shelter : 租税回避地(= tax haven ヘイブン:安息地) ※注意:heaven 天国

play by rules : 規則に則って

rest of : 他の

 

[Sentence]

It started here, just a nondescript law firm in Panama, but the secrets leaked from inside.

the law firm helped clients set up complex webs of shell corporations in tax shelter.

we have a system here that providies cover for every form of wrongding you can think of. 

what the Panama Papers project shows is that there is a parallel universe.If you have enough money or enough political power, you can almost decide to play by different rules to the rest of us.