CTF始めよ!

本当に初めてのCTFをやっていきます。初心者です。

pythonの基礎 入出力

標準入力は,

raw_input()

でOK。改行文字は自動で取り除かれる(まあ他と同様)。

※python3ではinput()に変更になったらしい

 

やり方がもう一つ

sysライブラリを使用する方法で,以下の3つがある

なお,改行文字が自動で取り除かれたりはせず,入力文字列をそのまま取得する

sys.stdin.readline()・・・一行を取得し,文字列を返す。

sys.stdin.readlines()・・・複数行を取得し,リストにして返す。

sys.stdin.read()・・・複数行を取得し,文字列を返す。

 

以上は,以下のサイトを参考にいたしました。

http://www.lifewithpython.com/2014/05/python-get-stdin-standard-input.html

 

次に,ファイル入出力

まずオープンとクローズは,

f = open("filename.txt", "r") #書き込みは"w"

f.close()

読み込みはさっきの3つと同じものが使えます

f.readline()

f.readlines()

f.read()

書き込みも簡単で,

f.write("string to write to the file")

追加で書き込まれていくと思う

 

pythonの文字コードエラー

UnicodeDecodeError: 'ascii' codec can't decode byte 0x89 in position 18: ordinal
not in range(128)

 

pythonでこんなエラーが出たら,,,

デフォルトの文字コードを変更してみると直るかもしれません。

変更の方法は以下の3行を追加するだけ↓(http://www.wakayama-u.ac.jp/~kazama/lab/python/i18n.htmlを参考にさせていただきました)

import sys

reload(sys)

sys.setdefaultencodeing("shift_jis") #←ここに任意の文字コードを。

ジャンプ命令

cmp A B

でAとBを比較。

両者が同じなら0。

0だとEFLAGSレジスタにZFフラグが設定される。

その後,je命令でジャンプ。

je dst

je命令は,EFLAGSレジスタにZFフラグが設定されていればジャンプ,されていなければスルーとなる。

つまり,cmpでの比較によって両者がイコールならば,ジャンプするということ。

だから,if(A==B){}に当たる。

備忘録的に

とりあえず常時開設型のオンラインCTFを進めています。

調べたすぐ出てきた以下の2つが有名なようです。

・CpawCTFさん(https://ctf.cpaw.site/

・ksnctfさん(http://ksnctf.sweetduet.info/

CpawCTFの方が簡単な気がします。

 

これらをやりながら,メモっぽくブログに書き残していく感じにします。

 

まずひとつ。バイナリ列「D4 C3 B2 A1」は.pcapファイルのヘッダーだということです。

また,linuxの「file」コマンドでファイルの種類を調べることができることを知りました。

HTTPのステータスコード,300番代はリダイレクト関係。

オフィス関連ファイルは,.odf。zip形式。xmlベース。

 

文字ー数値変換はpythonが便利です。

このスライドシェアのページが大変参考になりました。

www.slideshare.net

 

IT系の人間として

周りの情報系の友達がみんなブログとか書いてます。

で,それがきっかけでIT系のインターンバイトをやってたりすると聞きました。

なので,今までこういうことをしたことがなかったのですが,やってみようと思いました!

誰かの参考になれば一石二鳥だしね!

 

さて,内容はCTFをやろうと思います。

競プロの方が人気な気がしますが,私はセキュリティで世界目指してるので,CTFにします!

といってもホントに初心者なので,最初はレベルが低くて見るに耐えないと思いますが,頑張ります。