まずは該当ファイルをwiresharkで開く。
httpで絞る
問題タイトルから
basic認証→IDとPWが該当フラグではないか?
(前にやったことがあったから推測)
と推測
GET /~q8/
の部分をみると
Authorization: Basicの行がある
これが実際の認証情報。
ただしこれはフラグではなかった。
Authorization: Basicの行をクリックすると
Credentialsの行が現れる。
ここにFLAGあり。
正解だった。
ちなみに、Authorization: Basicの値を
echo '~~~' | base64 -d
とするとFLAGをGETできる。
http://opooner.hatenablog.com/entry/2014/07/20/032702
----
ちなみに,WebでBasic認証をするときIDとPassをコロンでつなげたid:Passがbase64でエンコードされているらしい
----
2018年5月1日火曜日
ksnctf math Ⅱをトレース
解答では2分探索で解けるとのこと。
以下のところで、FLAGは得られた。
ksnctf #17 Math II
ただし、対数の計算では正確な数字を得られなかった。
Y^101=X(X=12341234と仮で置き換え)
となるYを求める。
logyY^101=logyX
101=logy12341234
logy12341234=log1012341234 / log10Y
と対数の公式から置き換えられる。
pythonが導入された環境で
log1012341234(1234は問題上のx=の数字)を解く。
>>import math
>>print(math.log(10,2748……))
3912.43902305
logy12341234=log1012341234 / log10Y=101
より
101*log10Y=log1012341234 =3912.43902305
log10Y=3912.43902305 / 101 = 38.7370200302
>>print 3912.43902305 / 101
で計算
Y=10^38.7370200302
10の約38乗が今回の答え。
ただしpythonで求めると
>>print(math.pow(10,38.7370200302))
5.45783032701e+38
となった。
この値では、不正解だった。
解答の値と比較すると考え方は問題ない。
ただし、上記の計算方法だとeという文字が表示されてしまいすべてを数字で表現できなかった。
以下のところで、FLAGは得られた。
ksnctf #17 Math II
ただし、対数の計算では正確な数字を得られなかった。
Y^101=X(X=12341234と仮で置き換え)
となるYを求める。
logyY^101=logyX
101=logy12341234
logy12341234=log1012341234 / log10Y
と対数の公式から置き換えられる。
pythonが導入された環境で
log1012341234(1234は問題上のx=の数字)を解く。
>>import math
>>print(math.log(10,2748……))
3912.43902305
logy12341234=log1012341234 / log10Y=101
より
101*log10Y=log1012341234 =3912.43902305
log10Y=3912.43902305 / 101 = 38.7370200302
>>print 3912.43902305 / 101
で計算
Y=10^38.7370200302
10の約38乗が今回の答え。
ただしpythonで求めると
>>print(math.pow(10,38.7370200302))
5.45783032701e+38
となった。
この値では、不正解だった。
解答の値と比較すると考え方は問題ない。
ただし、上記の計算方法だとeという文字が表示されてしまいすべてを数字で表現できなかった。
2018年4月21日土曜日
ksnctf simple auth の解答をトレース
Simple Auth
をトレースする。
自力で解きたいが、まだまだ力不足なのでしばらくは他の人のブログを参考にしています。
問題はこちら
http://ksnctf.sweetduet.info/problem/32
他の人のブログをみてみる
「\[strcasecmp()] simple authメモ - Namareba食べたい」
http://namareba.hatenablog.com/entry/2014/06/21/014412
?password[]=hoge
のように書き換えればよいと記載。
fiddlerなるツールで書き換えたらしい。
fiddlerは今ないので、一旦とばし。
https://github.com/jacobsoo/ksnctf-Challenges/tree/master/Simple-Auth
回答がかいてある。
----
import urllib
import urllib2
url = 'http://ctfq.sweetduet.info:10080/~q32/auth.php'
data = {
"password[]": "hello",
}
req = urllib2.Request(url, urllib.urlencode(data), headers={'Content-type': 'application/x-www-form-urlencoded', 'Accept' : 'text/plain'})
resp = urllib2.urlopen(req)
szPage = resp.read()
print szPage
----
このスクリプトを書いてauth.phpという名前で保存。
http://localhost/auth.php
や
コマンドで
php auth.php
を実行するもt、FLAGがでてこない。
どうやったら、上記のスクリプトがうまく動くかがわからない。
保留
http://orangetech.hateblo.jp/entry/2017/02/08/113447
「chromeデバッカで少し書き換えて、適当な文字列入れてsubmitするとFLAGが表示されます。」
chromeがないので、保留。
https://qiita.com/nana0723japan/items/56d668f170f6443b24c3
firebug
環境用意が必要そう。いったん保留。
http://imoimo.hatenadiary.com/entry/2017/02/17/161816
具体的な実行環境の情報なし
以下の方針のもと、調査を続行
http://ksnctf.sweetduet.info/q/32/auth.php
を一部書き換えて実行してみる。
疑問
どうやってphpを実行する?
centos6にphpをインストールして以下コマンドを実行してみた。
yum -y install php php-devel php-mbstring php-mysql php-mcry pt php-gd php-pear php-pecl-apc
chmod 755 auth.php
./php auth.php
auth.phpは問題文のsourceをコピペ
結果
ソースファイルが表示されるだけ。
一体全体何をすればいいのかなあ?
phpを実行する方法がなんかそもそも違っている気がする。
結局は、他ページを探すことで回答を得る。
curlコマンドで一発解決している事例あり。
http://blog.theo.com.tw/Writeups/ksnctf/ksnctf-32-Simple-Auth/
最終的には、以下のコマンドでフラグゲット
curl -X POST -F ' password="" ' http://ctfq.sweetduet.info:1
0080/~q32/auth.php
反省
phpは、もっと初歩的な知識を体系的に学ばないと他の人のサイト見ても使いこなせない。
をトレースする。
自力で解きたいが、まだまだ力不足なのでしばらくは他の人のブログを参考にしています。
問題はこちら
http://ksnctf.sweetduet.info/problem/32
他の人のブログをみてみる
「\[strcasecmp()] simple authメモ - Namareba食べたい」
http://namareba.hatenablog.com/entry/2014/06/21/014412
?password[]=hoge
のように書き換えればよいと記載。
fiddlerなるツールで書き換えたらしい。
fiddlerは今ないので、一旦とばし。
https://github.com/jacobsoo/ksnctf-Challenges/tree/master/Simple-Auth
回答がかいてある。
----
import urllib
import urllib2
url = 'http://ctfq.sweetduet.info:10080/~q32/auth.php'
data = {
"password[]": "hello",
}
req = urllib2.Request(url, urllib.urlencode(data), headers={'Content-type': 'application/x-www-form-urlencoded', 'Accept' : 'text/plain'})
resp = urllib2.urlopen(req)
szPage = resp.read()
print szPage
----
このスクリプトを書いてauth.phpという名前で保存。
http://localhost/auth.php
や
コマンドで
php auth.php
を実行するもt、FLAGがでてこない。
どうやったら、上記のスクリプトがうまく動くかがわからない。
保留
http://orangetech.hateblo.jp/entry/2017/02/08/113447
「chromeデバッカで少し書き換えて、適当な文字列入れてsubmitするとFLAGが表示されます。」
chromeがないので、保留。
https://qiita.com/nana0723japan/items/56d668f170f6443b24c3
firebug
環境用意が必要そう。いったん保留。
http://imoimo.hatenadiary.com/entry/2017/02/17/161816
具体的な実行環境の情報なし
以下の方針のもと、調査を続行
http://ksnctf.sweetduet.info/q/32/auth.php
を一部書き換えて実行してみる。
疑問
どうやってphpを実行する?
centos6にphpをインストールして以下コマンドを実行してみた。
yum -y install php php-devel php-mbstring php-mysql php-mcry pt php-gd php-pear php-pecl-apc
chmod 755 auth.php
./php auth.php
auth.phpは問題文のsourceをコピペ
結果
ソースファイルが表示されるだけ。
一体全体何をすればいいのかなあ?
phpを実行する方法がなんかそもそも違っている気がする。
結局は、他ページを探すことで回答を得る。
curlコマンドで一発解決している事例あり。
http://blog.theo.com.tw/Writeups/ksnctf/ksnctf-32-Simple-Auth/
最終的には、以下のコマンドでフラグゲット
curl -X POST -F ' password="" ' http://ctfq.sweetduet.info:1
0080/~q32/auth.php
反省
phpは、もっと初歩的な知識を体系的に学ばないと他の人のサイト見ても使いこなせない。
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あたりを勉強するともっとわかるのだろうか??
が結果的には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章実施
を購入
さっそく、第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
------
↓
再起動してみて
環境
作業環境: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
------
↓
再起動してみて
2016年8月13日土曜日
centos6でRMforgeのインストール
centos6インストール後、初期設定にてRMforgeのインストールを試みるも失敗。
実行コマンドは以下
#yum -y install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
参考サイト
http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
へアクセスしても失敗するのでアドレスが変わった模様。
ググって直接ダウンロード
サイトは以下
http://www.mirrorservice.org/sites/apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/
ダウンロードしたファイル名
| 2013-03-20 15:59 | 12K |
登録:
投稿 (Atom)