2015年11月

Hack Dat Kiwi 2015 writeup Survey

Survey

Take a minute to fill out our survey! Thank you:
アンケートに答えると、フラグが表示されます。
そのアンケートはこちら、
Please take a few minutes to fill out this survey. It will greatly help us with our research and improving the quality of our future CTFs!

Where did you hear about us?
  • CTFtime
  • Invitation
  • Facebook
  • Twitter
  • Friend
  • その他:
What are the motivations for you to take part in CTFs?
  • Refreshing hacker skills
  • Fun solving challenges
  • Rewards (including cash)
  • Bragging rights (scoreboard)
  • Find new ideas and challenges
  • その他:
Do you regularly take part in CTFs?
  • Yes
  • No
  • その他:
Are you part of a regular CTF team?
  • Yes
  • No
  • その他:
次に進みます。
How was the overall quality of Hack Dat Kiwi 2015 CTF?
Bad                    Good
1 2 3 4 5 6 7 8 9 10

How was the ease of use and quality of the portal/scoreboard?

With respect to registration process, login, browsing challenges, submitting flags, defining teams and etc.
Bad                    Good
1 2 3 4 5 6 7 8 9 10

Any comments on improving the CTF portal/overall quality?

How well-designed and fun were the challenges?

Logical flow, easy to understand the goals, easy to recognize progress
Bad                    Good
1 2 3 4 5 6 7 8 9 10

Which categories did you like and took part in?
  • Web
  • Forensics
  • Reversing/Exploiting
  • Crypto/Stegano
  • Experimental
さらに次のページへ進みます。
Would you take part in our next CTF event?
  • Yes of course
  • No
  • Maybe
  • その他:
Any comments on timing and duration of the CTF to make it easier for you to attend?

Please provide your CTF username so that we can correlate your survey results:

We will obtain country, team, score and twitter information from your CTF account to match with this survey.
最後の質問に答えて、フラグが表示されました。
Your response has been recorded. The flag is hsABf8jG3VK93hQf
図解 アンケート調査と統計解析がわかる本[新版]
酒井 隆
日本能率協会マネジメントセンター
2012-01-26


Hack Dat Kiwi 2015 writeup SSL Sniff 1

SSL Sniff 1 (Forensics)

We received a network capture file of an HTTPS request that was MITMd. Try to find the culprit.
この問題では、pcapファイルが与えられています。pcapファイルをWiresharkで開きます。パケット数も15パケットと多くありませんので、一通り目を通してみると、Key-Isという文字列が目に付きます。

sslsniff




ということで、フラグは、
Key-Is-dUs1mKl4
の部分です。



Hack Dat Kiwi 2015 writeup Phone Lock

Phone Lock (Web)

A friend of mine forgot her phone password. I told her you're the hacker! Go get 'em tiger.
I forgot my phone password, can you help me unlock it? (Don't judge, happens to us all)
リンクをクリックすると、携帯電話の数字盤が表示されます。数字を4文字押すと暗証番号とチェックされ、間違っていると振動します。
さて、どのように実装されているか確認するために、ブラウザからソースを表示してみます。
salt="0c4aa63feb00b85304c2556257fe2963";
valid="5a5d9ffab9ea139a8b05d3d98a557bcf";
function buttonClick(e)
{
    if (locked) return false;
    var t=$("#result");
    t.val(t.val()+"X");
    result+=e.target.text;
    if (t.val().length>=4)
    {
        if (md5(salt+result)==valid)
        {
            alert("Flag is: "+md5(salt+result+result));
        }
        else
        {
            locked=true;
              $("#resultHolder").effect("shake", { times:tries }, tries*100,function(){
                t.val("");
                result="";
                tries++;
                locked=false;
              });
        }
    }
}
resultには押した数字が入ります。saltとresultを連結した文字列のMD5ハッシュ値とvalidを比較して一致していれば、flagが表示されるようです。
したがって、次のように4桁の数字をブルートフォースアタックでFlagを取得することができます。
for(a=0;a<=9;a++)
{
    for(b=0;b<=9;b++)
    {
        for(c=0;c<=9;c++)
        {
            for(d=0;d<=9;d++)
            {
                if (md5(salt+a+b+c+d)==valid)
                {
                    alert("Flag is: "+md5(salt+a+b+c+d+a+b+c+d));
                    break;
                }
            }
        }
    }
}
このjavascriptを実行すると、次のようにフラグが表示されます。
Flag is: a9786c1342e430ce0b00ae4e0ad582a4


RCTF 2015 Quals writeup Analysis nginx‘s log

Analysis nginx's log(this flag is like ROIS{xxx}
log_d30afe96202aafae7c0a1ecc123c0584
さて、ログを見てみると、ブラインドSQLインジェクションを試みているようです。
ログファイルはURLエンコードされていますので、2345行目~2351行目のログをURLデコードします。

192.168.52.1 - - [06/Nov/2015:19:33:07 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>64),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:07 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>96),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:08 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>80),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:08 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>88),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:08 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>84),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:08 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>82),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:09 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>81),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:09 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))!=82),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"

「!=」の部分が怪しいですね。ASCIIコードの82は「R」になります。
同様に、2353行目~2360行目をURLデコードします。

192.168.52.1 - - [06/Nov/2015:19:33:10 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>64),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:10 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>96),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:10 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>80),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:11 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>72),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:12 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>76),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:13 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>78),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:13 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>79),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:13 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))!=79),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
ASCIIコードの79は「O」になります。
以下、同様にやっていくと、
82    R
79    O
73    I
83    S
123    {
109    m
105    i
83    S
99    c
95    _
65    A
110    n
64    @
108    l
121    y
83    S
105    i
115    s
95    _
110    n
71    G
49    1
110    n
120    x
95    _
76    L
48    0
103    g
125    }
となります。
よって、フラグは、
ROIS{miSc_An@lySis_nG1nx_L0g}
です。



ASIS CTF Quals 2014 writeup Strange

http://asis-ctf.ir/tasks/crypto/crypto_100_0846ec09aab1276d3f58132e9e0d9040
193783664954325860839119335839123899215102615420822972351760578005089136540425309354036361893838393003588891746622376179640815659427394332341396349623915618698881917748452642227703372088122750038977875271898725946720852004880885256474153240496403679762658175476439747881512983568010339887513815290532457778339653199840844995620334862083972129131373571189257219076954184188287439143813927696901842427070726653570329826784994939781399262722041373098152896420678252225833798975089624831218241591628711120707329895543671411906901315360684109949162093034473760905475852393975531277897806950327343042645059549958465853312789713887760614613019996408541328573908373854848160937603498857471516627134163969286531049737140365371424114198553258003189099111625628658195048410056477354418943486633764457994737288416245326617781808808365823018019007303548026276450867096742624996960312090440565297914562234479315177247633875823205403409920418528411649247750473506398553163169161650499998659753179520467576895466482641387252430718673195843748651606278144
数字の羅列です。
まず、この数字の羅列を巨大な数値として扱ってみましょう。Rubyだと簡単に扱うことができます。

下記は、数値を16進数に変換しバイナリとしてファイルに出力するrubyプログラムです。
f = File.open("1c2a7ff1d5cdf3d36544551ae18e30c8", "r")
a = f.read
f.close
b = a.to_i
c = b.to_s(16)
p c
e = c.scan(/../).map{ |d| d.to_i(16) }.pack('C*')
f = File.open("aaa", "wb")
f.write(e)
f.close
出力されたファイルの種類をfileコマンドで調べます。
% file aaa
aaa: 7-zip archive data, version 0.3
7-zipなので解凍してみると、”strange”ファイルが出来ます。
% file strange
strange: lzop compressed data - version 1.030, LZO1X-999, os: Unix
fileコマンドで調べると、lzop形式なのでUniversal Extractorで解凍すると、”strange.uu”ファイルが出来ます。
% file strange.uu
strange.uu: uuencoded or xxencoded, ASCII text
WinRARで解凍?すると、”strange.U”ファイルが出来ます。
% file strange.U
strange.U: ASCII text
fe18be6a597ffad862b3e8acf9afacb6b6a781efa67acb1a81efad85ab7e
ca8bbe85abdefa7a2dfac79e9fe6de7e8adeffeb617be7e56a0fa2b3e012
212fae9dd7abb1ca2b7bee1bf38d79d5fd7bfb4774ef6db8fbde7b79af1e
6be79ae1a7f4
先ほどのrubyプログラムを流用して、16進文字列をバイナリとしてファイル作成するプログラムを作ります。
f = File.open("strange.U", "r")
c = f.read
f.close
p c
e = c.scan(/../).map{ |d| d.to_i(16) }.pack('C*')
f = File.open("bbb", "wb")
f.write(e)
f.close
% file bbb
bbb: data
base64でエンコードします。
% base64 bbb
/hi+all/+this+is+a+strange+message+that+you+have+not+seen+before/+the+flag+i
s+ASIS+underscore+4b84151f17+0d07224+957ea8ea+ea4af0
フラグは、
ASIS_4b84151f170d07224957ea8eaea4af0
だと思いましたが、1文字足りないようです。

メタプログラミングRuby 第2版
Paolo Perrotta
オライリージャパン
2015-10-10


ASIS CTF Quals 2014 writeup Sound Zoo

http://asis-ctf.ir/tasks/stego/steg_150_e3cdf499ed8341fe750530b93b6ff816

fileコマンドでファイルの種類を確認すると、MP3であることが分かります。
% file steg_150_ccf8db5e8cf287469ed291212577f032
steg_150_ccf8db5e8cf287469ed291212577f032: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, JntStereo
ファイルの拡張子をmp3に変更して、Audacityで開きます。
再生すると、エンジン音に混じって怪しい音(声?)が聞こえます。

[エフェクト]→[テンポの変更...]を選択、[変更率(%)]を調整すると、怪しい音が次のような音声のように聞こえるようになります。

bbe60b482d22ea98a4d0ef205f772a8b
したがって、フラグは、
ASIS_bbe60b482d22ea98a4d0ef205f772a8b
です。

サウンド圧縮 テクニカルガイド
藤本 健
ビー・エヌ・エヌ新社
2004-03-18


Hackover CTF 2015 writeup greetings

Welcome to Hackover CTF 2015! Here is your first flag: hackover15{ready2hack}
フラグは、
hackover15{ready2hack}
です。




Hackover CTF 2015 writeup allyourbase

All your base are belong to us! You have no chance to decode make your time.

SGVsbG8gbXkgZnJpZW5kLiBUaGlzIGlzIGJhc2U2NC4gQXgeW91IHNlZSwgaXQgaXMgYnJv
a2VuLiDYW4geW91IHJlY292ZXIgdGhlIGZvbGxvd2luZBmbGFnOioYWNrb3ZlcjE1e21pc
2FsaWduZWRCaXRzQnJlYWtCYXNlNjR9
BASE64で復号します。

Hello my friend. This is base64. Ax[ンHルYK]\ネ悍レル[笈6�薮R&V6W"F��fニ匁A匈��險ackover15{misalignedBitsBreakBase64}
一部、文字化けしていますが、フラグの形式はhackover15{~~}ですので、フラグは、
hackover15{misalignedBitsBreakBase64}
でしょう。



HITCON CTF 2015 Quals writeup Flag not Found

Welcome to HITCON CTF 2015 Quals
Find the flag in ctf2015.hitcon.org
存在しないページにアクセスして、404エラーを出します。

例えば、以下のURLにブラウザでアクセスしてみます。
https://ctf2015.hitcon.org/flag

Oh 404 not found
Ok, ok I know ... here is your flag: hitcon{do_you_wanna_play_a_game?enjoy_hitcon_ctf_2015_quals:)}
フラグは、
hitcon{do_you_wanna_play_a_game?enjoy_hitcon_ctf_2015_quals:)}
です。



記事検索
ギャラリー
  • 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
カテゴリー