ctfのお勉強 ksnctf #20 G00913 #20 G00913
ksnctfを解いてみた
#20 G00913
πの10桁一致する初めのprime numberを見つける問題。
とりあえず、πを長めに取ってプログラムで1桁目から試してみる。
pi="31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421" def is_prime n for d in 2..(n - 1) if (n % d) == 0 return false end end true end for i in 1..pi.length-10 num=pi[i..i+9] p "check:"+num if is_prime(num.to_i) p "found:"+num.to_s break end end
しばらく放置してたら見つかりました。
#25 Reserved
何かのプログラム言語のような気がしますが、
さっぱりなのでとりあえず始めの方の文字列でググります。
length q chr uc and print chr ord uc qw q flock q and print chr oct ord q or no and print chr ord uc q each ne and print chr ord uc qw q gt q and print chr oct hex ord uc q my m and print chr ord uc q each ne and print chr ord qw q sin q and print chr oct ord uc q each le and print chr length q q splice srand getservbyname setnetent ne reset endprotoent foreach scalar rewinddir cos setnetent not else getprotobyname q and print chr ord qw q ge q and print chr ord uc q eval le and print chr ord uc qw q sin q and print chr ord uc qw q no q and print chr ord qw q use q and print chr ord q mkdir m and print chr ord q each le and print chr ord q pop and print chr oct ord q open no and print chr ord q eval le and print chr ord q eval le and print chr oct hex ord uc q gt log and print chr ord q q eq and print chr ord q q eq and print chr ord q q q and print chr ord qq q q and print chr ord uc q lt eval and print chr ord q chr lc and print chr ord q map m and print chr ord qw q ne q and print chr ord q mkdir m and print chr ord q q q and print chr ord q my alarm and print chr ord q pop and print chr ord qw q uc q and print chr oct oct ord uc qw q bind q and print chr ord q q eq and print chr ord q split s and print chr ord q open do and print chr ord q ge log and print chr ord qw q not q and print chr ord q oct no and print chr ord q xor x and print chr ord qw q die q and print chr ord q ne sin and print chr oct oct ord uc qw q fork q
どうやらperlらしいです。ppencodeというらしいです。
実行するとフラグが出てきます。
なんかググる力に依存しまくってるような。。
つづく?