ctfのお勉強

ksnctfを解いてみた

ksnctf

Math2

数学問題。
2分探索で求める問題。

Step1. 10^n

def calc_digits(x)
  min = 1
  max = x.size
  p max
  while max - min > 2 do
    ave = (max + min) / 2
    if (10 ** ave) ** 101 > x
      max = ave
    else
      min = ave
    end
  end
  min
end

def calc_y(x, digits)
  min = 10 ** digits
  max = 10 ** (digits + 1)

  while max - min > 1 do
    ave = (min + max) / 2
    if ave ** 101 > x
      max = ave
    elsif ave ** 101 < x
      min = ave
    elsif ave ** 101 == x
      ave
    end
  end
end

digits  = calc_digits(x)
p digits
y = calc_y(x, digits)
p "FLAG_#{y}"

#28 Lo-Tech Cipher

zipを解くと画像が二枚。ステガノかと適当に試してみるもなにもみつからず。
二枚の画像を合わせてみると文字列がうっすらと見えて。
"the last ::: in the ZIP.."
zipも重ねてみると答えが。