(해결)[pwnable.kr] coin2

해킹대회 문제 풀이 연습장소

Moderator: amesianx

Post Reply
gee8195
Posts: 34
Joined: Thu Jul 21, 2016 5:12 pm

(해결)[pwnable.kr] coin2

Post by gee8195 » Sun Nov 06, 2016 2:46 pm

힌트주셔서 감사합니다. ㅎ
1.png
1.png (12.82 KiB) Viewed 333 times
일단 hackhack 님이 주신 힌트로 어느정도 윤곽이 보여서 여러가지 테스트를 해봤습니다.
원리는 coin1과 크게 다르지 않다라는걸 알았습니다.


2.png
2.png (59.47 KiB) Viewed 333 times
일단 정확하게 어떤 원리인지 알아보기위해 N = 10, C = 4 라는 가정하에 테스트를 해보았습니다.
포너블 사이트 서버에서 하는 기능과 같은 기능을 하는 코드를 짠뒤 테스트해보았습니다.
코인 10개중에 0번부터 순서대로 가짜코인이 존재한다는 가정으로 돌려봤습니다.
위의 결과를 보시면 가짜 코인이 0인 경우에는 결과가 모두 1씩 부족한걸로 나왔습니다.
가짜코인이 1인경우 맨앞의 결과만 짝수로 나오고, 2인경우 두번째 결과가 짝수로나왔습니다.
3인경우는 첫번째, 두번째의 결과가 짝수로 나왔습니다. 대충 감이오는것 같습니다.
코인을 확인하는 4번의 기회를 이용해 앞에서부터 이진법으로 계산을 하면 될것 같습니다.
쉽게 생각해 홀수를 0, 짝수를 1로 보고 이진법으로 계산을 하면 코인의 위치를 알 수 있습니다.

1 : 2^0
2 : 2^1
3 : 2^0 + 2^1
4 : 2^2
5 : 2^0 + 2^2
6 : 2^1 + 2^2
7 : 2^0 + 2^1 + 2^2
8 : 2^3
9 : 2^0 + 2^3

이처럼 C가 4이므로 지수는 0부터3까지 가능합니다
그러면 어떻게 코딩 해야할지 보이는것 같습니다. 위의 그림과 같은 기능을 하는 코드를 짠뒤,
가짜코인이 0일 경우에는 0을 보내고, 그게 아닌경우는 위와 같은 연산을 해서 보내는 코드를 짜면 될것같습니다.


3.png
3.png (145.51 KiB) Viewed 333 times
소스코드 입니다.


4.png
4.png (47.55 KiB) Viewed 333 times
플래가그 출력됬습니다. 어느정도 파이썬에 익숙해져가는것 같습니다.
저한테 부족한게 가장중요한 정보수집능력이 아닌가싶습니다... 조금더 노력해보겠습니다.

Post Reply

Who is online

Users browsing this forum: No registered users and 21 guests