当サイトではIT・Web系技術、メタバースなどの情報提供を目的とします。
個人的な技術ブログなども投稿する予定です。

【Hack The Box】Vaccine – Walkthrough –

こんにちは。ゆーろんです。 今回は Hack The Boxにて提供されいる Starting Pointsの「Vaccine」に関する攻略方法を記載していきたいと思います。 初めてのWriteUpの記述となるので温かい目でご覧ください。 目次 テクニック 手順 スキャニング/列挙 侵入 権限昇格 テクニック テクニック 説明 ネットワークサービススキャン NMAPによるポートスキャン ZIPパスワードの解析 zip2johnとjohntheripperによるパスワード解析 SQL/コマンドインジェクション SQLMapによるSQL/コマンドインジェクション リバースシェルの確立 nc/bashコマンドによるリバースシェルの確立 手順 スキャニング/列挙 Nmapによりポートスキャン Nmapによりポートスキャンを行います。 sudo nmap -sC -sV 10.10.14.53 --open -p- -T3 上記コマンドにより仮想しているサービスは以下のように判明しました。 ポート番号 サービス 詳細 21/tcp ftp vsftpd 3.0.3 22/tcp ssh OpenSSH 8.0p1 Ubuntu 6ubuntu0.1 (Ubuntu Linux; protocol 2.0) 80/tcp http Apache httpd 2.4.41 ((Ubuntu)) FTP接続 ftpがanonymousログインできることがNMAPのスキャンで判明します。 ftpにanonymousログインを行います。 ftp 10.10.14.53 ログイン後、ls -alコマンドでbackup.zipが見つかるのでgetコマンドでダウンロードします。

【第2回】CTFをやってみる ksnctf

こんにちは。ゆーろんです。 記録がてら、今回もCTFの備忘録をぼちぼち書いていきます。 ぼちぼち解くことを目指すので複数日またぐこともあると思いますが、よろしくお願いします。 目次 問題 解いてみる 感想 問題 国内では有名な ksnctf です。 今回の問題は以下です。 Programming - ksnctf program.cpp #include <stdio.h> #include <string.h> int main () { const char * s = " " "0123456789" " " " " " " "ABCDEFGHIJ" ; printf ( "%c" , strlen (s) ); int i = 020000000 + 001000000 + 000600000 +000040000 +000007000 +000000500 +000000020 +000000002 ; printf ( "%s" ,&amp; i ) ; long long l = 2LL * 11LL * 229LL * 614741LL * 9576751LL + 5LL ; printf ( "%s" , &amp; l ) ; float f = 1.0962664770776731080774868826855754386638240000e-38f ; printf( "%s" , &amp;f ) ; double d = 6.7386412564254706622868098890859398199406890000e-308 ; printf ("%s" ,&amp;d); } C++のソースコードが与えられています。 なぞにTabや空白があるので気味の悪いコードとなっています。

【第1回】CTFをやってみる ksnctf

こんにちは。ゆーろんです。 記録がてら、CTFの備忘録をぼちぼち書いていきます。 ぼちぼち解くことを目指すので複数日またぐこともあると思いますが、よろしくお願いします。 目次 問題 解いてみる 1日目 2日目 感想 問題 国内では有名な ksnctf です。 今回の問題は以下です。 Login - ksnctf http://ctfq.u1tramarine.blue/q6/ https://ctfq.u1tramarine.blue/q6/ http://ctfq.u1tramarine.blue/q6/ https://ctfq.u1tramarine.blue/q6/ ログインフォームのURLが2つ与えられています。 ここからFLAGの文字列をどうにかして取得するということです。 解いてみる 1日目 まず入力フォームといえばSQLインジェクションが思い浮かびます。 ということで定番の” or 1=1 —を入れてみます。 以下のように表示されます。 上記コードから2点の脆弱性が確認できます。 パスワードが平文で保存されている プリペアドステートメントが実装されていない またコードからはidパラメータ入力においてSQLの条件文を満たせば写真ページが表示されることがわかります。 つまり直接パスワード自体をSQLでそのまま直接取得して表示することは厳しそうです。 2日目 SQLインジェクションにはいくつか種類があるようです。 HTTPレスポンス/リクエストなどを見た限り特に何もないようなので ここでSQLインジェクションを深めます。 インバウンドSQLインジェクション エラーベースSQLインジェクション UNIONSインジェクション ブラインドSQLインジェクション マルチブルステートメント 調べる限り、ブラインドSQLインジェクションという手法が怪しそうでした。 ブラインドSQLインジェクション Webサーバへ何種類かまたは複数のデータを送信した際のレスポンスや動作からデータベースの情報を分析する手法 ブルートフォースでやみくもにFLAG_hogehoge…と総当たりするのも大変なのでパスワードの断片情報から求めます。 まずパスワードの文字数を求めてみます。 SELECT * FROM user WHERE id="" or (SELECT length(pass) FROM user WHERE id = "admin") > 30 -- $id" AND pass="$pass" 上記のSQLとなるようにひたすらフォームに入力して調べ、Congratulationsとページが出るところを探します。