동전개수가 주어지고 그중에 한가지 위조동전을 찾아야한다 진짜 동전은 무게가 10이고 위조는 9이다.

C는 물어볼 수 있는 횟수인데 물어볼 수 있는 동전 개수는 제한이 없고 그 동전 무게의 합을 알려준다.

그 합으로 유추해서 위조동전이 어디에 있는지 범위를 줄여 나가면 된다.

30초 안에 100개의 위조동전을 찾아야 flag를 주기 때문에 수작업으로는 불가능 하다.

이진트리를 이용해서 쉽게 풀 수 있다.


※정답은 C횟수를 다 사용한 다음 보내줘야 서버가 맞았는지 틀렸는지 채점한다. 한마디로 주어진 C횟수보다 위조지폐를 빨리 찾아도 채점은 C만큼 send를 받은 다음 채점한다.









'System Hacking > pwable.kr' 카테고리의 다른 글

14.pwnable cmd1  (0) 2018.02.23
13.pwnable lotto  (0) 2018.02.23
10.pwnable shellshock  (0) 2018.02.22
07.pwnable input  (0) 2018.02.19
09.Pwnable mistake  (0) 2018.02.16

c로 짜여진 프로그램에서 주어진 조건에 맞게 5단계에 걸쳐 올바르게 들어간다면 flag를 출력해주는 프로그램이다. 구성을 아래와 같다.

나는 pwntools를 이용한 python스크립트를 간단하게 짜서 문제를 풀었다. 


Stage 01. argv

argv['A']에 "\x00", argv['B']에 \x20\x0a\x0d"가 들어있는가?


Stage 02. stdio

파일 디스크립터 표준입출력을 이용해서 특정값(\x00\x0a\x00\xff, \x00\x0a\x02\xff)을 넣을 수 있는가?


Stage 03. env

환경변수 인풋을 넣을 수 있는가?


4.file

"\x0a"라는 파일을 열고 문자를 write할 수 있는가?


5.network

argv['C']의 값을 포트번호로 하는 

소켓통신을 통해 어떤 값을 send할 수 있는가?


아래를 참고하여 페이로드를 파악해보면 이해가 쉽다.












pwntool을 이용하면 소켓통신을 remote하나로 간편히 할 수 있고 local에 있는 프로그램에 여러 인자들을 긴 코드 필요없이 

간단히 넘겨 줄 수 있다.



'System Hacking > pwable.kr' 카테고리의 다른 글

11.pwnable coin1  (0) 2018.02.23
10.pwnable shellshock  (0) 2018.02.22
09.Pwnable mistake  (0) 2018.02.16
12.Pwnable blackjack  (0) 2018.02.16
08.Pwnable leg  (0) 2018.02.15

+ Recent posts