今日はlevel6を解きますー!

同じく前獲得したlevel6のパスワードでログインします。

いきなり、こういう画面がでました。

hintはインフォショップbbsのtelnet接続メニューでよく使われたハッキング方法です。

と書かれています。

私はまだ、89年生まれなので。。分からないです。。それでgoogle先生に

聞いても、よくわからなかったです。。

一応エンターキーを押したら

こういう画面が。。接続したいbbsを選択してくださいと。。。

????????????????????????????????????????????????????????????????????????????

今回はさっぱり分からなくて、色々検索したり、本をみたりしました。

回答は!シグナルに関係がある問題でした!!

それでシグナルに関して、勉強も少ししました!

シグナル=信号!!

linuxではkillコマンドでシグナルを送ります!linuxを使ったことある方は知ってますよね!

windowsでもタスクマネージャーでプロセスを強制終了する時シグナルを

送ります。

それがCUIがGUIかだけの差だとgoogle先生が教えてくれました!

 

それで、一番最初のhintが出力される時ctrl+cを押すとlevel6の

シェールが現れます。

ここでpasswordファイルの中身をみると。。次のパスワードがでます

ははははは。。。。。ん。。。何か物足りないですね。。

なのでgdbで分析をしてみました。

お。。今回はちょっと長いですねwww

一番上から見ていきましょうー!

まず何かをpushそてsystem関数を呼び出します。

それは”cat hint”ですね!!

だから、ログインしたらすぐhintの内容が見えたのですね!

次は、キャプチャー撮るを忘れましたがgetchar関数で一文字を

入力されます。

 

その後”clear”をpushしてsystem関数を呼び出します。

 

clearした後は次のprintf文達で上の画面のように(#########なんちゃら~)

何かのサービス達を出力します!!

 

そして、signal関数を呼び出します。

signal(2、sig_func)こういう形ですね。

つまり、ctrl+cシグナルが入力されるとsig_funcが実行されます。

それで、sig_func関数を見てみると、ctrl+cが入力されると

Can't use ctrl+cという文字列を出力します!

→2番はSIGINTです!interrupt!これです!

日本語では割り込みだとgoogle先生が翻訳してくれました。

実行されてる処理を一時的に中断する!ということで。。。ww

 

そして、上で見てた、1,2,3番のサービス番号を入力されます。

scanfは引数が二つですね!scanf(”%d”、&buf)こういう形なのでpushを二回します。

二回というか。。二つをpushしますね!

 

これの下はif文で1か2か3かを判断し、それぞれのIPアドレスに接続をして

終了するものです!!

それでパスワードは

これでーす!!