April Fools' GTF 2017 供養(Writeup)
April Fools' GTF 2017に参加。1809ptで15位。
Welcome!! (Misc 555)
Please input your password.(Today is April Fool)
Today is April Fool
がフラグ、かと思いきや何でも通るっぽい。
thinking_face (Trivia 51)
Good GTFs always have trivia tasks.
🤔
(U+1F914) がフラグ。
Japanese Contest (Trivia 61)
What’s the most famous CTF in Japan.
SECCON
がフラグ。
Houses (Trivia 91)
Prime
Mind
Force
Lore
Spirit
Chaos
and more?
PhrackとかCardsとかナンチャラとか打った後に、Einherjarと打ったら通った。 Orangeも打っておけばよかった。
O-mikuji (Guess 100, -500)
The flag is a digit.
6と答えると100ptだが、別の数字を答えると-500pt。
Kyo TO Kyo (Guess 75)
Can you read Japanese?
東京都府西東京都西東京都西東京都西東京都西東京都東京都府西東京都東京都府西東京都西東京都西東京都東京都府東京都府西東京都西東京都東京都府西東京都西東京都西東京都東京都府東京都府東京都府西東京都東京都府西東京都東京都府西東京都東京都府西東京都西東京都西東京都東京都府西東京都西東京都西東京都東京都府東京都府西東京都西東京都東京都府東京都府東京都府東京都府西東京都東京都府東京都府西東京都東京都府東京都府西東京都東京都府西東京都東京都府東京都府西東京都東京都府東京都府東京都府東京都府西東京都西東京都東京都府西東京都西東京都東京都府東京都府西東京都西東京都西東京都西東京都西東京都西東京都東京都府東京都府西東京都東京都府東京都府東京都府西東京都西東京都東京都府東京都府西東京都西東京都西東京都西東京都西東京都東京都府西東京都東京都府東京都府東京都府東京都府東京都府西東京都西東京都東京都府東京都府西東京都東京都府西東京都西東京都西東京都東京都府東京都府西東京都東京都府東京都府東京都府西東京都西東京都東京都府東京都府西東京都西東京都東京都府西東京都西東京都西東京都東京都府西東京都東京都府東京都府東京都府東京都府東京都府西東京都西東京都東京都府東京都府西東京都東京都府東京都府東京都府西東京都西東京都東京都府東京都府西東京都西東京都西東京都西東京都西東京都東京都府東京都府西東京都東京都府西東京都東京都府東京都府西東京都東京都府東京都府東京都府東京都府西東京都西東京都東京都府西東京都西東京都東京都府東京都府西東京都西東京都西東京都西東京都西東京都東京都府西東京都東京都府東京都府東京都府東京都府東京都府西東京都西東京都東京都府東京都府西東京都東京都府西東京都西東京都西東京都東京都府東京都府東京都府西東京都西東京都東京都府西東京都西東京都西東京都東京都府東京都府西東京都西東京都東京都府東京都府西東京都東京都府西東京都東京都府東京都府東京都府東京都府東京都府西東京都東京都府東京都府西東京都東京都府西東京都東京都府西東京都西東京都西東京都東京都府東京都府西東京都東京都府西東京都西東京都西東京都東京都府東京都府東京都府西東京都西東京都西東京都西東京都西東京都西東京都東京都府東京都府西東京都東京都府西東京都西東京都西東京都東京都府東京都府西東京都東京都府東京都府東京都府西東京都西東京都西東京都東京都府東京都府西東京都西東京都東京都府東京都府西東京都西東京都東京都府東京都府西東京都東京都府西東京都東京都府西東京都西東京都東京都府東京都府西東京都西東京都東京都府東京都府西東京都東京都府西東京都東京都府東京都府東京都府東京都府東京都府西東京都東京都府東京都府西東京都西東京都西東京都東京都府東京都府西東京都西東京都東京都府東京都府西東京都西東京都西東京都東京都府西東京都西東京都東京都府東京都府西東京都東京都府東京都府東京都府西東京都東京都府東京都府東京都府東京都府西東京都西東京都東京都府西東京都東京都府東京都府東京都府東京都府東京都府西東京都東京都府
とりあえず「東京都」を消すと「府」と「西」が残ったので、それぞれ1/0に変換して16進表記したところそれっぽい数字が出た。
$ cat test.txt | sed 's/東京都//g' | sed 's/府/1/g;s/西/0/g' 1000001010001100100011101010100010001100111101101101011011110010011000000110111001100000101111100110100011011100110010001011111001101110011000001101011011110010011000001011111001101000111001000110011010111110110101000110100011100000011010001101110001100110011010100110011010111110110001100110001001101110111100101111101 $ python Python 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> x = 0b1000001010001100100011101010100010001100111101101101011011110010011000000110111001100000101111100110100011011100110010001011111001101110011000001101011011110010011000001011111001101000111001000110011010111110110101000110100011100000011010001101110001100110011010100110011010111110110001100110001001101110111100101111101 >>> hex(x) '0x41464754467b6b793037305f346e645f37306b79305f3472335f6a3470346e3335335f633137797dL' >>> hex(x)[2:-1].decode('hex') 'AFGTF{ky070_4nd_70ky0_4r3_j4p4n353_c17y}'
Scoreserver (Wave 404, 422, 500)
Railsで書かれたスコアサーバに対して、404 Not Found、422 Unprocessable Entity、500 Internal Server Errorが出るリクエストを送る問題。
404は適当なURLにリクエストを投げればよい。
$ curl -v https://score.easterns.kyoto.aka.westerns.tokyo/404 (snip) > GET /404 HTTP/1.1 > Host: score.easterns.kyoto.aka.westerns.tokyo > User-Agent: curl/7.49.1 > Accept: */* > * STATE: DO => DO_DONE handle 0x6000578a0; line 1659 (connection #0) * STATE: DO_DONE => WAITPERFORM handle 0x6000578a0; line 1786 (connection #0) * STATE: WAITPERFORM => PERFORM handle 0x6000578a0; line 1796 (connection #0) * HTTP 1.1 or later with persistent connection, pipelining supported < HTTP/1.1 404 Not Found < Keep-Alive: timeout=5, max=100 < Content-Length: 43 < Content-Type: text/html; charset=utf-8 * Server Microsoft-IIS/8.0 is not blacklisted < Server: Microsoft-IIS/8.0 < Status: 404 Not Found < X-Request-Id: a877d931-3fda-4e7b-b1b7-641eb0d7a95d < X-Runtime: 0.002451 < Strict-Transport-Security: max-age=15552000 < Set-Cookie: ARRAffinity=7e9446a8829326b9f60badbd177b48e8d9d142cff612a6b0eb16657aa4ba518d;Path=/;Domain=score.easterns.kyoto.aka.westerns.tokyo < Date: Sat, 01 Apr 2017 08:06:38 GMT < 404: APRCTF{Kyoto_Is_In_The_West_Of_Tokyo} * STATE: PERFORM => DONE handle 0x6000578a0; line 1955 (connection #0) * multi_done * Connection #0 to host score.easterns.kyoto.aka.westerns.tokyo left intact
422はapplication/x-www-form-urlencoded
として不正な文字列を送ればよい。
$ curl -v --data "give me flag" https://score.easterns.kyoto.aka.westerns.tokyo/problems/5 (snip) > POST /problems/5 HTTP/1.1 > Host: score.easterns.kyoto.aka.westerns.tokyo > User-Agent: curl/7.49.1 > Accept: */* > Content-Length: 12 > Content-Type: application/x-www-form-urlencoded > * upload completely sent off: 12 out of 12 bytes * STATE: DO => DO_DONE handle 0x6000578b0; line 1659 (connection #0) * STATE: DO_DONE => WAITPERFORM handle 0x6000578b0; line 1786 (connection #0) * STATE: WAITPERFORM => PERFORM handle 0x6000578b0; line 1796 (connection #0) * HTTP 1.1 or later with persistent connection, pipelining supported < HTTP/1.1 422 Unprocessable Entity < Keep-Alive: timeout=5, max=100 < Content-Length: 40 < Content-Type: text/html; charset=utf-8 * Server Microsoft-IIS/8.0 is not blacklisted < Server: Microsoft-IIS/8.0 < Status: 422 Unprocessable Entity < X-Request-Id: be09ece7-151b-4c0d-b931-51fabf2481b0 < X-Runtime: 0.005885 < Strict-Transport-Security: max-age=15552000 < Set-Cookie: ARRAffinity=49a94ddcdeb25346ee3a2b6c760ba69b1e208509e94f78fe226be7730ca067b6;Path=/;Domain=score.easterns.kyoto.aka.westerns.tokyo < Date: Sat, 01 Apr 2017 07:25:24 GMT < 422: 422{Tokyo_Is_In_The_East_Of_Kyoto} * STATE: PERFORM => DONE handle 0x6000578b0; line 1955 (connection #0) * multi_done * Connection #0 to host score.easterns.kyoto.aka.westerns.tokyo left intact
500はflagを不正なUTF-8文字列にしてPOSTすると発生した。
POST /problems/5?locale=en HTTP/1.1 Host: score.easterns.kyoto.aka.westerns.tokyo User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0 Accept: */* Accept-Language: en-US,en;q=0.7,ja;q=0.3 Accept-Encoding: gzip, deflate, br Referer: https://score.easterns.kyoto.aka.westerns.tokyo/problems/5?locale=en X-CSRF-Token: HkPQbeE+mqmqRtkz9gADaH0NyeoIsd9ay1SQ/qH+myOphKZnI4nSPY76FmqzAT/X7LKuDJCGGy8IcoEadj3fMw== Content-Type: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest Content-Length: 144 Cookie: _minictf_session=[redacted]; ARRAffinity=[redacted] Connection: close utf8=%E2%9C%93&authenticity_token=[redacted]&flag=%FF%FF
HTTP/1.1 500 Internal Server Error Content-Length: 90 Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/8.0 Status: 500 Internal Server Error X-Request-Id: a1cf19da-d03d-45c7-937e-4fadda3f380f X-Runtime: 0.021744 Strict-Transport-Security: max-age=15552000 Date: Sat, 01 Apr 2017 11:16:38 GMT Connection: close 500: FLAG{Osaka_Is_In_The_West_Of_Kyoto}; Thank you for your debugging! We'll fix it soon
test problem (Guess 50, 250)
与えられたページのタイトルを答えると50pt。
TWGTF{this_is_not_flag_and_there_is_no_more_flag}
250点はわからなかった。
所感
他に解きたかった問題は以下。
- MyEncryption (Guess/Crypto 100)
- Ko-Gyoku (Guess/Misc 193)
- Find flag (Recon 189)
- FindMe (Recon 199)