SECCON 영화CTF Writeup
210점으로 97위(858팀중)였습니다.
의외로 좋은 질의?
고등어도 축제 중. CTF 있다 있다.
플래그의 예는? (Misc)
헤세이 마지막 마지막, 레이와 최초의 SECCON CTF에 오신 것을 환영합니다. 플래그는 SECCON{reiwa}입니다.
SECCON{reiwa}
bREInWAck (Misc)
원호가 바뀐다. 기호도 바뀐다.
참고 : htps : // 그럼.ぃきぺぢ아. 오 rg / uki / B 라이프 ck
틀린 것 같지 않은 곳은 결정 치고 나머지는 총당하고 모든 패턴을 Web 인터프리터에서 실행.
# coding: utf-8
require "pp"
input =
"令和和和和和和和和和和和和和和和和「令和
和和和和令和和和和令和和和和和和和令和和
和和和和令和和平平平平平成」令和和和。令
和和和和和。成成。。平成成成成。成。令令
和和和和和和和和和和和。令和和。平平平和
和和和。令和和。和和和和。令令和和和和和
和和和和和和和。平平平和和和和和和和和和
和和和和。成成成成成成成成。令成成成成成
成成成。令令。成成成成成。成成成成成成。
令和。平平和和。令令令和和和和和和和和和
和。"
%w|< > + -|.permutation(4) do |a|
pp a
str = input.dup
str.gsub!("\n", "")
str.gsub!("平", a[0])
str.gsub!("成", a[1])
str.gsub!("令", a[2])
str.gsub!("和", a[3])
str.gsub!("「", "[")
str.gsub!("」", "]")
str.gsub!("。", ".")
puts str
end
["<", "-", ">", "+"]
>++++++++++++++++[>+++++>++++>+++++++>++++++>++<<<<<-]>+++.>+++++.--..<----.-.>>+++++++++++.>++.<<<++++.>++.++++.>>++++++++++++.<<<+++++++++++++.--------.>--------.>>.-----.------.>+.<<++.>>>++++++++++.
SECCON{bREIn_WAnic!}
0은? (Misc)
nc zerois-o-reiwa.seccon.jp 23615
SECCON Beginners였던 녀석.
% nc zerois-o-reiwa.seccon.jp 23615
[1/100]
0=8-?
?=8
[2/100]
0=78*55-?
?=4290
[3/100]
0=40*96+?-3903
?=63
[4/100]
0=56*87+82-?-4879
?=
...
방정식의 솔버를 모르기 때문에 ?
를 총당 수치로 대체하여 eval
했다.
가끔 큰 해로 타임 아웃하는 것이 싫다.
마지막으로 -?
가 올 경우는 탐색할 필요가 없기 때문에, 그것을 넣으면 다녔다.
마지막으로 +?
도 있는 것 같지만 다녔을 때는 우연히 맞는 것 같다.
라스트 2문의 대답이 반드시 0으로 지나가는 것은 令(0)和(0)
무엇일까.
require "pp"
require_relative "pwnlib"
host = "zerois-o-reiwa.seccon.jp"
port = 23615
PwnTube.open(host, port) do |tube|
j = 1
loop do
puts "Stage #{j}:"
s = tube.recv_until(/0=(.+)\n/)
s =~ /0=(.+)\n/
expr = $1
tube.recv_until("?=")
puts expr
ans = nil
if expr =~ /(.+)-\?$/
ans = eval($1)
puts "simple: #{ans}"
else
for i in 0..1000
expr2 = expr.gsub("?", "(#{i.to_s})")
ret = eval(expr2)
if ret == 0
puts "found: #{i}"
ans = i
break
end
end
if !ans
for i in 0..1000000
expr2 = expr.gsub("?", "(#{i.to_s})")
ret = eval(expr2)
if ret == 0
puts "found: #{i}"
ans = i
break
end
end
end
end
tube.sendline(ans.to_s)
j += 1
end
end
% ruby zero_sum.rb
[*] connected
Stage 1:
78-?
simple: 78
Stage 2:
31*11-?
simple: 341
Stage 3:
24*?-96-960
found!: 44
Stage 4:
25+45-13*?+307
found!: 29
Stage 5:
?*76+17-5+49-2417
found!: 31
Stage 6:
?+94*33-13+67-74-3129
found!: 47
Stage 7:
90*66+69-?-68*87+35-120
found!: 8
...
Stage 98:
84+6-8*30*47-43+4+80*80-72-53*9+66*84+94-22-9+6*65+97*20-7-68+52*75*10+68-84+53-87*1-17+94*4+19-78*25-89*24+19-64*52+37-44+97*55-99+97*12*23-13+60-42+73*4*92-92+50+18*67-25*99-25+30-29*57+92+72-31*44+64-77*74-97*92+76+44*77-75-2*65+55-50+8*5+32*68-39+99*92-80-15+6*89-88*2+82+11-?
simple: 89475
Stage 99:
79+73*52-1+86-95*55+78-9*84*14+49-81-91+74*71*33-18+1+54*65-13*91+90-42+76-92*19+66*76-62+25*26-67-44*21+56+71-76*65+50-48*52+70-20*93-9*11+11*21+65-31-98+75*59+91-1*7+22*96-25*76-83+42-98*42+29-90+14*32*6-97+61+48*23-20-92+20*52+52-12*82*82-14+38*42+91-62*31+63-69+44-56*98+5*53-?*0-53-76870
found!: 0
Stage 100:
93+57*17-73*87-62+18-64*28+67-60*29+30+36*19-59*72+29-55+70-60*12+23-55*79*61+44-55-31*39+25-23*47+99+89-56*44+94-51*58*17+23-92-19+40*56*26+62-98-33*11+43-11*64+90*31+74-44*34+90-36+64*40-41+65-16*63*9-19+97+43*69-92-1*49+81*71-11+44+87-71*59*12+90-49+65-21*46+78*8-36*13+63-62-81*36+0*?+8-49+325901
found!: 0
Stage 101:
"Congratulations!\nThe flag is SECCON{REIWA_is_not_ZERO_IS}.\n(Enter RETURN key if connection is not disconnected)\n"
[*] connection closed
신원호 발표 (Forensics)
이해하기 쉽다.
PDF에서 이미지를 추출하는 웹 서비스가 있었기 때문에 장미하면
음?
reiwaVote (웹)
야바 녀석 섞여 잔디.
다른 사람의 Writeup
SECCON{reiwa}
원호가 바뀐다. 기호도 바뀐다.
참고 : htps : // 그럼.ぃきぺぢ아. 오 rg / uki / B 라이프 ck
틀린 것 같지 않은 곳은 결정 치고 나머지는 총당하고 모든 패턴을 Web 인터프리터에서 실행.
# coding: utf-8
require "pp"
input =
"令和和和和和和和和和和和和和和和和「令和
和和和和令和和和和令和和和和和和和令和和
和和和和令和和平平平平平成」令和和和。令
和和和和和。成成。。平成成成成。成。令令
和和和和和和和和和和和。令和和。平平平和
和和和。令和和。和和和和。令令和和和和和
和和和和和和和。平平平和和和和和和和和和
和和和和。成成成成成成成成。令成成成成成
成成成。令令。成成成成成。成成成成成成。
令和。平平和和。令令令和和和和和和和和和
和。"
%w|< > + -|.permutation(4) do |a|
pp a
str = input.dup
str.gsub!("\n", "")
str.gsub!("平", a[0])
str.gsub!("成", a[1])
str.gsub!("令", a[2])
str.gsub!("和", a[3])
str.gsub!("「", "[")
str.gsub!("」", "]")
str.gsub!("。", ".")
puts str
end
["<", "-", ">", "+"]
>++++++++++++++++[>+++++>++++>+++++++>++++++>++<<<<<-]>+++.>+++++.--..<----.-.>>+++++++++++.>++.<<<++++.>++.++++.>>++++++++++++.<<<+++++++++++++.--------.>--------.>>.-----.------.>+.<<++.>>>++++++++++.
SECCON{bREIn_WAnic!}
0은? (Misc)
nc zerois-o-reiwa.seccon.jp 23615
SECCON Beginners였던 녀석.
% nc zerois-o-reiwa.seccon.jp 23615
[1/100]
0=8-?
?=8
[2/100]
0=78*55-?
?=4290
[3/100]
0=40*96+?-3903
?=63
[4/100]
0=56*87+82-?-4879
?=
...
방정식의 솔버를 모르기 때문에 ?
를 총당 수치로 대체하여 eval
했다.
가끔 큰 해로 타임 아웃하는 것이 싫다.
마지막으로 -?
가 올 경우는 탐색할 필요가 없기 때문에, 그것을 넣으면 다녔다.
마지막으로 +?
도 있는 것 같지만 다녔을 때는 우연히 맞는 것 같다.
라스트 2문의 대답이 반드시 0으로 지나가는 것은 令(0)和(0)
무엇일까.
require "pp"
require_relative "pwnlib"
host = "zerois-o-reiwa.seccon.jp"
port = 23615
PwnTube.open(host, port) do |tube|
j = 1
loop do
puts "Stage #{j}:"
s = tube.recv_until(/0=(.+)\n/)
s =~ /0=(.+)\n/
expr = $1
tube.recv_until("?=")
puts expr
ans = nil
if expr =~ /(.+)-\?$/
ans = eval($1)
puts "simple: #{ans}"
else
for i in 0..1000
expr2 = expr.gsub("?", "(#{i.to_s})")
ret = eval(expr2)
if ret == 0
puts "found: #{i}"
ans = i
break
end
end
if !ans
for i in 0..1000000
expr2 = expr.gsub("?", "(#{i.to_s})")
ret = eval(expr2)
if ret == 0
puts "found: #{i}"
ans = i
break
end
end
end
end
tube.sendline(ans.to_s)
j += 1
end
end
% ruby zero_sum.rb
[*] connected
Stage 1:
78-?
simple: 78
Stage 2:
31*11-?
simple: 341
Stage 3:
24*?-96-960
found!: 44
Stage 4:
25+45-13*?+307
found!: 29
Stage 5:
?*76+17-5+49-2417
found!: 31
Stage 6:
?+94*33-13+67-74-3129
found!: 47
Stage 7:
90*66+69-?-68*87+35-120
found!: 8
...
Stage 98:
84+6-8*30*47-43+4+80*80-72-53*9+66*84+94-22-9+6*65+97*20-7-68+52*75*10+68-84+53-87*1-17+94*4+19-78*25-89*24+19-64*52+37-44+97*55-99+97*12*23-13+60-42+73*4*92-92+50+18*67-25*99-25+30-29*57+92+72-31*44+64-77*74-97*92+76+44*77-75-2*65+55-50+8*5+32*68-39+99*92-80-15+6*89-88*2+82+11-?
simple: 89475
Stage 99:
79+73*52-1+86-95*55+78-9*84*14+49-81-91+74*71*33-18+1+54*65-13*91+90-42+76-92*19+66*76-62+25*26-67-44*21+56+71-76*65+50-48*52+70-20*93-9*11+11*21+65-31-98+75*59+91-1*7+22*96-25*76-83+42-98*42+29-90+14*32*6-97+61+48*23-20-92+20*52+52-12*82*82-14+38*42+91-62*31+63-69+44-56*98+5*53-?*0-53-76870
found!: 0
Stage 100:
93+57*17-73*87-62+18-64*28+67-60*29+30+36*19-59*72+29-55+70-60*12+23-55*79*61+44-55-31*39+25-23*47+99+89-56*44+94-51*58*17+23-92-19+40*56*26+62-98-33*11+43-11*64+90*31+74-44*34+90-36+64*40-41+65-16*63*9-19+97+43*69-92-1*49+81*71-11+44+87-71*59*12+90-49+65-21*46+78*8-36*13+63-62-81*36+0*?+8-49+325901
found!: 0
Stage 101:
"Congratulations!\nThe flag is SECCON{REIWA_is_not_ZERO_IS}.\n(Enter RETURN key if connection is not disconnected)\n"
[*] connection closed
신원호 발표 (Forensics)
이해하기 쉽다.
PDF에서 이미지를 추출하는 웹 서비스가 있었기 때문에 장미하면
음?
reiwaVote (웹)
야바 녀석 섞여 잔디.
다른 사람의 Writeup
% nc zerois-o-reiwa.seccon.jp 23615
[1/100]
0=8-?
?=8
[2/100]
0=78*55-?
?=4290
[3/100]
0=40*96+?-3903
?=63
[4/100]
0=56*87+82-?-4879
?=
...
require "pp"
require_relative "pwnlib"
host = "zerois-o-reiwa.seccon.jp"
port = 23615
PwnTube.open(host, port) do |tube|
j = 1
loop do
puts "Stage #{j}:"
s = tube.recv_until(/0=(.+)\n/)
s =~ /0=(.+)\n/
expr = $1
tube.recv_until("?=")
puts expr
ans = nil
if expr =~ /(.+)-\?$/
ans = eval($1)
puts "simple: #{ans}"
else
for i in 0..1000
expr2 = expr.gsub("?", "(#{i.to_s})")
ret = eval(expr2)
if ret == 0
puts "found: #{i}"
ans = i
break
end
end
if !ans
for i in 0..1000000
expr2 = expr.gsub("?", "(#{i.to_s})")
ret = eval(expr2)
if ret == 0
puts "found: #{i}"
ans = i
break
end
end
end
end
tube.sendline(ans.to_s)
j += 1
end
end
% ruby zero_sum.rb
[*] connected
Stage 1:
78-?
simple: 78
Stage 2:
31*11-?
simple: 341
Stage 3:
24*?-96-960
found!: 44
Stage 4:
25+45-13*?+307
found!: 29
Stage 5:
?*76+17-5+49-2417
found!: 31
Stage 6:
?+94*33-13+67-74-3129
found!: 47
Stage 7:
90*66+69-?-68*87+35-120
found!: 8
...
Stage 98:
84+6-8*30*47-43+4+80*80-72-53*9+66*84+94-22-9+6*65+97*20-7-68+52*75*10+68-84+53-87*1-17+94*4+19-78*25-89*24+19-64*52+37-44+97*55-99+97*12*23-13+60-42+73*4*92-92+50+18*67-25*99-25+30-29*57+92+72-31*44+64-77*74-97*92+76+44*77-75-2*65+55-50+8*5+32*68-39+99*92-80-15+6*89-88*2+82+11-?
simple: 89475
Stage 99:
79+73*52-1+86-95*55+78-9*84*14+49-81-91+74*71*33-18+1+54*65-13*91+90-42+76-92*19+66*76-62+25*26-67-44*21+56+71-76*65+50-48*52+70-20*93-9*11+11*21+65-31-98+75*59+91-1*7+22*96-25*76-83+42-98*42+29-90+14*32*6-97+61+48*23-20-92+20*52+52-12*82*82-14+38*42+91-62*31+63-69+44-56*98+5*53-?*0-53-76870
found!: 0
Stage 100:
93+57*17-73*87-62+18-64*28+67-60*29+30+36*19-59*72+29-55+70-60*12+23-55*79*61+44-55-31*39+25-23*47+99+89-56*44+94-51*58*17+23-92-19+40*56*26+62-98-33*11+43-11*64+90*31+74-44*34+90-36+64*40-41+65-16*63*9-19+97+43*69-92-1*49+81*71-11+44+87-71*59*12+90-49+65-21*46+78*8-36*13+63-62-81*36+0*?+8-49+325901
found!: 0
Stage 101:
"Congratulations!\nThe flag is SECCON{REIWA_is_not_ZERO_IS}.\n(Enter RETURN key if connection is not disconnected)\n"
[*] connection closed
이해하기 쉽다.
PDF에서 이미지를 추출하는 웹 서비스가 있었기 때문에 장미하면
음?
reiwaVote (웹)
야바 녀석 섞여 잔디.
다른 사람의 Writeup
Reference
이 문제에 관하여(SECCON 영화CTF Writeup), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nicklegr/items/57061f0baa928697f345텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)