3번째로 풀이할 문제이다.

Solve me 의 Winter Sleep 문제이다.
이 문제를 풀면서 느낀것이 문제이름 잘지었네~ 라는 생각이 들었다. :)



(Winter Sleep)



아래는 문제 페이지이다.



(문제 페이지)



코드를 보면 단순하다. time이라는 변수에 값을 넣어 get방식으로 전달하면 된다.

그 값이 특정값 이상 이하이어야하고
그 값동안 sleep 한 후 flag를 보여준다.
음 그렇군! 초를 계산해볼까?

php online interpreter를 이용하여 계산하였다.



(sleep 할 시간 계산)



오? 간단한데? 저 값을 보내주었다.





(7776000 값 전달)




...






...


...


음? 기네?
초단위니까 몇분기다려야되는거지?






(시간 단위)



시간단위로 2160...
2160 시간.. 날짜로는 90일..
뭔가 잘못되어가는 기분이 들었다.

그럼 최소 시간으로 잡아보자! 라는 생각으로 계산해보았지만...



(최소)





(최소 시간)




(최소 60일)




이쯤 되니 아! 60일 정도 자고 일어나면 되겠다 라는 생각이 들었다.

말도 안되는 소리같고..
이쯤되서 별것들에 눈길을 주었다.
is_numeric 함수
error_reporting 함수

게다가 왜 sleep 앞에 int로 형변환을 해주었을까?
구지? is_numeric으로 숫자인지 검사해놓고서는..




(의심 대상)



오류 리포팅을 하지 않겠다? 라는 의미로 저 구문이 있었다.

sleep 에서 에러를 유발시켜서 sleep을 패스시키고 flag를 확인하는 건가?

그렇기 위해서는 우선 is_numeric을 우회할 수 있어야 했다.

그래서 php.net 공식 홈페이지에서 is_numeric을 찾아보았다.



(is_numeric)




여기서 눈에 딱 들어온건 바로
e
지수표현도 is_numeric에서 true로 판단한다는 것이었다.

이때 아하!
하고 모든것이 퍼즐처럼 맞춰졌다.

바로 그렇기 때문에 sleep 앞에 int로 형변환해주었고
e 지수표현으로 소수로 넘겨주어 int로 바뀌면 소수점들은 날라가니까 
기다릴만한 시간이 되는 거였다.

그리하야
time에 5.184e6  을 넘겨주고 flag를 얻을 수 있었다.




(문제 해결)



(문제 해결)


'WarGame > 500 Project' 카테고리의 다른 글

(6/500) Wargame.kr - flee button  (0) 2017.04.11
(5/500) Wargame.kr - QR Code Puzzle  (0) 2017.04.11
(4/500) CodeShell.kr - dummy 64  (0) 2017.04.10
(2/500) Solve Me - Bad Compare  (0) 2017.04.06
(1/500) Solve Me - Warm up  (0) 2017.04.06



2번째 문제!
생각보다 난관이었다...(밤늦게 풀어서 그럴수있지만)



(Bad Compare 문제)



아래는 문제 화면이다.




(문제 페이지)



answer 값을 찾아서 get방식으로 전달해주면 된다.





(answer 값 찾기)



굉장히 헤멨었다..
이유는 전에 풀었던 워게임 문제에서 이런 비슷한게 있었던거 같은데
자리수만 맞춰주면 됬기 때문이다. 그래서 10글자의 아무값이나 넣어보기도하고
특수기호도 너보고 url 인코딩도 해보다가
php 비교 연산자의 취약점을 찾아보다가 (게다가 문제에서는 === 연산자를 사용한다.)
answer에 적혀있는 값을 찾아내야겠다는 생각으로 바뀌었다.

분명 저기서 나오는게 깨져 나오는 것일것이라고 생각하고
버스슈트를 켰다.

그리고 돌아오는 응답 내용을 열어보았다.



(응답 내용)



열어보니 여기도 깨져 보였다. 
그래서 Hex로 열어보았더니 값이 보인다!




(등장한 값)



신나서 이 값을 복사하여 답을 전송했다.




(거의 정답)



우롱... 앤서...

이게아닌가..
이번에는 Hex에 나온 값을 %붙여서 (url인코딩해서) 보내기로 했다.
그게 아무래도 더 정확하게 보낼 수 있을 것 같았다.




(answer)



정답!!
:)
flag가 보인다.

전에 풀었던 기억에 메달렸다면 아마 더 오래 헤맸을듯 하다.!




(문제 해결)


'WarGame > 500 Project' 카테고리의 다른 글

(6/500) Wargame.kr - flee button  (0) 2017.04.11
(5/500) Wargame.kr - QR Code Puzzle  (0) 2017.04.11
(4/500) CodeShell.kr - dummy 64  (0) 2017.04.10
(3/500) Solve Me - Winter Sleep  (0) 2017.04.06
(1/500) Solve Me - Warm up  (0) 2017.04.06


오늘부터 500 프로젝트에 들어간다.
딱 500문제를 풀어서 정리하는 것이다!

이제 이 카테고리에 차근차근 500문제까지 쌓아보겠다!

처음 올리는 문제는 Solve Me 사이트의 문제이다.
Warm up 부터 시작하였다.




(Warm up 문제)



아래는 문제 화면이다.



(문제 화면)



문제 화면을 보니 위에 알 수 없는 코드?가 보이고 
아래에는 소스코드가 보인다.
소스코드에는 flag를 base64로 인코딩해서 출력해주고 있는 것을 보여준다.
이렇게 말을 안해도 사실
맨 뒤에 = 가 보이면 base64일까? 라는 의심부터 들긴했다.

즉 위에 보이는 값을 디코딩해주면?




(flag 디코딩)


flag의 값을 알 수 있다.

이 값을 처음에 어디다 적는지 몰라서...
flag 변수에 넣어서 get방식으로도 보냈었다..




(잘못된 정답 제출)



알고보니.
메인 페이지에 flag를 적는 칸이 있다 :)



(정답 입력)



이 칸에 입력하면 정답인지 확인 할 수 있다.



(문제 해결)


'WarGame > 500 Project' 카테고리의 다른 글

(6/500) Wargame.kr - flee button  (0) 2017.04.11
(5/500) Wargame.kr - QR Code Puzzle  (0) 2017.04.11
(4/500) CodeShell.kr - dummy 64  (0) 2017.04.10
(3/500) Solve Me - Winter Sleep  (0) 2017.04.06
(2/500) Solve Me - Bad Compare  (0) 2017.04.06

+ Recent posts