학회_공부해요/워게임

[Dreamhack] Write up - Type c-j

yenas0 2024. 2. 6. 16:25
반응형

https://dreamhack.io/wargame/challenges/960

 

Type c-j

Description php로 작성된 페이지입니다. 알맞은 Id과 Password를 입력하여 플래그를 획득하세요. 플래그의 형식은 DH{...} 입니다.

dreamhack.io


 

문제 접속하면 아래처럼 뜬다

 

id랑 password입력하면 되는 구조..

문제파일도 다운 받아봄

 

check.php 에 

이쪽이 flag관련인거같음

 

 

입력한 값이 &id랑 &pw랑 일치해야되는 것 같다.

 

위에 코드랑 살펴서 &id먼저 확인해보기로함.

id는 10자리이고 위에 함수를 통해서 랜덤으로 생성되는 것 같다.

랜덤인데 어케하냐 싶었는데

 

아래 코드랑 비교해보니까 위에 처음 랜덤생성 때는 분명 문자열 선언이었는데 아래에서는 int 정수형으로 바뀌어져 있었다.

 

정수형으로 바꾸면 아스키코드값이 출력되는건지 뭔지 모르겠어서 검색해봤는데

문자열에 숫자이외에 다른 문자가 포함되어있는 경우 php의 intval()함수를 사용해서 문자열로 바꾼다고 한다.

해당 함수로 정수로 변환할 경우에 숫자를 만날 때 까지 문자열의 시작부터 숫자를 추출하는데 문자열이 숫자가 아닌 문자로 시작할 경우 숫자와 만날 수 없기 때문에 정수로 변환하면 0으로 나온다고 한다...

 

그럼 결국에 id문자열의 첫글자가 숫자가 아니라 문자이기만 하면 id는 무조건 0000000000이 되는것 같다.

 

 

다음으로 pw값 관련된 코드를 확인해보았다.

이거 밖에 없음

 

아래 있는 정보 끌어보아도 8글자 라는 것 정도뿐이다.

아마 숫자 1을 sha1로 해시화하고 8글자까지만 비밀번호로 쓰라는 의미인듯 싶다.

생성하면 다음과 같다.

356A192B7913B04C54574D18C28D46E6395428AB

 

앞에 8글자 따서 로그인해보기로 했다.

 

 

FLAG 나왔다~~

반응형