Views: 2
문제
There is a nice program that you can talk to by using this command in a shell: $ nc mercury.picoctf.net 43239, but it doesn't speak English...
넷켓으로 접속하면 숫자만 쭈루룩 나온다.
❯ nc mercury.picoctf.net 43239
112
105
99
111
67
84
70
123
103
48
48
100
95
107
49
116
116
121
33
95
110
49
99
51
95
107
49
116
116
121
33
95
55
99
48
56
50
49
102
53
125
10
생긴게 100% 아스키다ㅋㅋ
하나씩 찾기 힘드니 간단하게 변환 코드 하나만 만들자.
res = `nc mercury.picoctf.net 43239`
flag = res.split.map { |num| num.to_i.chr }.join
puts flag
코드 설명
res = `nc mercury.picoctf.net 43239`
nc mercury.picoctf.net 43239를 실행하고 출력되는 값을 res에 저장하고
flag = res.split.map { |num| num.to_i.chr }.join
res 값을 분할(split)한 다음 하나씩 불러온다(map). 그리고 그 불러온 값을 num에게 넣고(|num|) 이 값을 정수로 변경한다(.to_i). 그리고 이 정수를 해당하는 문자로 변경하고(.chr) 하나의 문자열로 합친다(.join). 마지막으로 이 값을 flag에 저장한다.
puts flag
flag에 저장된 값을 출력한다.
이제 만들어진 루비 코드를 실행하자.
❯ ruby run.rb
끝.