본문 바로가기

해킹공부/pwnable.kr

lotto

뭔가 쉬운문제만 계속 푸는것 같지만...

이름이 너무 맘에들었으니 풀어주겠다. ( 실제로 하진 않음 )

 

이번엔 소스보단 실행을 먼저 해보자 ( 진짜 실제론 안함 )

 

 

정말 한눈에 딱 알게 해놨다.

설명은 화면만 봐도 알 수 있으니 생략하자

( help는 죄 printf고 exit는 정말 그냥 끝내버린다. )

 

 

코드가 긴 관계로 중요한 부분만 잘라냈다.

random하게 받은 6개의 값을 1~45로 한정하고 비교해 match가 6이 되면 flag를 보여준다.

 

/dev/urandom이 의심스러워 여러 방면으로 검색하다 디버깅해본 결과 random값을 잘 주는 멀쩡한 파일이었다.

 

이번엔 비교하는 for문을 확인해보자.

길이가 6인 문자열 2개를 비교할거면 for문 1개면 되지만 2중으로 사용하였다.

때문에 submit 배열에 같은 값을 6개를 입력해주면 lotto의 배열과 한글자만 맞으면 match가 6이 되는 것이다.

 

 

결국 submit의 6개 문자를 통일시키고 하나 얻어걸릴때까지 계속 반복하다 한번 걸리면 flag를 볼 수 있다.

단 lotto의 문자열은 1~45 사이의 값이기 때문에 ascii code로 이 사이에서 입력 가능한 값을 넣어주어야 한다.

 

결국 논리적 분석이 필요하긴 했지만 진짜로 로또 맞을때까지 돌리는 문제였다.

'해킹공부 > pwnable.kr' 카테고리의 다른 글

blackjack  (0) 2017.08.30
passcode  (0) 2017.08.30
mistake  (0) 2017.08.30
random  (0) 2017.08.30
flag  (0) 2017.08.30