2017年4月29日土曜日

ctf Simple Auth IIの解答をトレースしてみた writeup

SQLインジェクションの問題を解きたく、この問題にチャレンジ。
が結果的にはSQLインジェクションとはそもそも関係なさそう。

今回は、他サイトの解法をそのままトレースすることにした。

参考サイト

http://imoimo.hatenadiary.com/entry/2016/06/24/175733

http://timeislong.hatenablog.com/entry/2016/07/13/183000


https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10138372915
開放の考え方が参考になる。

FLAGゲットをするストーリーとしては
データベースの中身からFLAGを探す
じゃあデータベースをみるには?
ー>ダウンロードを試みる
ーー>どうやってダウンロードする??
ーーーー>しかし、webアドレスの一部を変えてダウンロードできるっていう考えがなかなかたどりつかない。
これはなれるしかないか?

1.
http://ksnctf.sweetduet.info/problem/35

内の2つのサイトを開く

2.


http://ctfq.sweetduet.info:10080/~q35/auth.php

http://ctfq.sweetduet.info:10080/~q35/database.db
として実行
ー>
database.dbがダウンロード

3.database.dbに対してsqlite3コマンドを実行
ー>その後selectコマンドでフラグをゲット

ctf4b@ctf4b-vm:~$ pwd
/home/ctf4b
tf4b@ctf4b-vm:~$ cd Downloads/
ctf4b@ctf4b-vm:~/Downloads$ ls
database.db
ctf4b@ctf4b-vm:~/Downloads$ ls -l
合計 4
-rw-rw-r-- 1 ctf4b ctf4b 2048  4月 29 21:01 database.db
ctf4b@ctf4b-vm:~/Downloads$
ctf4b@ctf4b-vm:~/Downloads$ sqlite3 database.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite> select * from user;
root|FLAG_iySDmApNegJvwmxN
sqlite>


問題は一応とけた。だが疑問点あり

疑問

sourceの中からどうしてdatabase.dbにそもそも着目できる??
source部分には、database.dbは以下の1箇所。
推測:database.db前後の以下の式は、id,pwを入力すると直接実行されるSQL文ということか?
------

if ($_POST['id']!=='' or $_POST['password']!=='')
{
    $try = true;
    $db = new PDO('sqlite:database.db');
    $s = $db->prepare('SELECT * FROM user WHERE id=? AND password=?');
    $s->execute(array($_POST['id'], $_POST['password']));
    $ok = $s->fetch() !== false;
}
------

sqlite3とはそもそも何か?
SQLiteのデータベースを操作するためのコマンド

https://hydrocul.github.io/wiki/commands/sqlite.html

上記で実施した
sqlite3 database.db
とは
sqlite3 データベース名
でデータベースへ接続するコマンドを実行していることを意味する。

そこからselectでデータベースの中身を調べてFLAGを探す
今回はselect * from user;
でflagをget
これはselect * from user;自体はもはや決まり文句のようなコマンド?

もしくはsource内のSELECT * FROM userを参考にしたか??
PHPあたりを勉強するともっとわかるのだろうか??

2017年3月5日日曜日

kali linuxのインストールとWing IDEの準備

サイバーセキュリティプログラミング pythonで学ぶハッカーの思考
を購入

さっそく、第1章を読んで、kali linuxとWing IDEを導入
kali linuxはVirtualBoxに導入
参照ページはこちら

その後、python環境の確認と必要パッケージの導入実施
以下コマンドのみ紹介

###バージョン確認###
#python --version

###パッケージ管理ツールのインストール###
#apt-get install python-setuptools pytho-pip

###GitHubを使ったトロイの木馬をビルドするために使うモジュールのインストール###
#pip intall github3.py

###正しくインストールされたかの確認###
#python
>>>import github3
>>>exit()


続いてWing IDEの導入
結果からいうと本に記載のあるdebの導入は失敗
dpkg -i wingide5_5.1.5-1_amd64.deb
(本ではwingide5_5.1.5-1_i386.deb しかし検証環境は64bitのためamd64.debを使用)

https://wingware.com/pub/wingide/5.1.5/
より
wingide-5.1.5-1-x86_64-linux.tar.gz
をダウンロードして導入
導入手順はこちらを参照

起動は、GUIからはできなかった。
以下のコマンドでWingIDEを起動
#wing5.1

その後は
[Stack Data]タブ

[Debug Probe]タブ
の使い方の説明あり。
[Debug Probe]タブについては
エディタ画面に以下のコマンドを記載
converted_integer
1
converted_interger = 2
その後F5を押すとスクリプトの実行を再開できると本には説明がある。
F5をおしてみたが、実際成功しているのかどうかがよくわからない。

予定
サイバーセキュリティプログラミング pythonで学ぶハッカーの思考
の2章実施


2017年1月15日日曜日

esxi 5.5から6.5へアップデート時Initializing IOV発生_

以下の手順で、esxi 5.5から6.5へアップデート

環境
作業環境:windows10
esxiはHP ML110 G7にインストール

1.esxi6.5のisoイメージをダウンロード

2.isoイメージをDVDに書き込み

3.esxi環境にdvdをセット。

4.esxiを再起動。再起動後、F11をクリック⇒dvdで起動する

5.6.5のインストーラーを選択。

6.initializing IOVとなって、そのまま処理が止まった。

以下のページに対処方法の記載あり。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14155250564

VMインストーラー起動直後にShift Oを押す(画面下部に記載あり)

出てきたコマンドの後ろにそのまま(スペース)noIOMMUを入力してエンター

普通にインストール→完了したらDVDメディアを取り出して、再起動

また最初の起動画面でShift Oを押す(画面下部に記載あり)

出てきたコマンドの後ろにそのまま(スペース)noIOMMUを入力してエンター

普通にVMが起動するので、トラブルシューティングオプションからSSHを使用するよう設定する。またIPアドレスを振って外部からSSH接続できるようにしておく

外部のPCからSSH接続(チャレンジレスポンス)で接続し、そのあとに
vi /bootbank/boot.cfg
開いたらkerneloptの項目の後ろに(スペース)noIOMMUを入力し保存する。


------
bootstate=0
kernel=tboot.b00
title=Loading VMware ESXi
kernelopt=no-auto-partition noIOMMU
modules=b.b00 --- jumpstrt.gz --- useropts.gz --- features.gz --- k.b00 --- char
build=6.5.0-4564106
updated=2
------

再起動してみて