CTF 스터디

[pwnable.kr] 2번_collision 풀이

dalgorithm 2021. 3. 23. 20:14
728x90

 

포너블 2번_collision 문제 풀이

 

먼저 가장 아래에 있는 ssh col@pwnable.kr -p2222를 통해 접속했다.

 

 

비밀번호는 guest를 입력해주었다.

 

 

1번 문제를 풀었던 방법과 동일하게 시작해보았다.

어떤 파일이 있는지 확인하기 위해 ls 명령어를 입력했다.

col, col.c, flag 파일 총 3개가 있었다.

 

 

root 권한이 아닌 col 파일을 열어보니 [passcode]라고 나타났다.

패스코드를 찾아서 입력해야 문제를 풀 수 있을 것처럼 생겼다.

 

 

col.c는 예상한 것럼 root권한이라 열리지 않았고,

cat 명령어를 통해 파일 내용을 출력하였다.

생각보다 긴 내용이 담아져 있었다.

 

check_password와 메인함수의 조건문을 중요하게 보아야 할 것 같다.

 

조건문을 봐보면 hashcode인 0x21DD09EC와 길이가 20byte인 입력 인자가

같으면 flag가 출력될 것 같다.

 

check_password 함수를 보면 char 포인터를 int 포인터로 변환하고

 for문을 5번 반복해서 ip값을 res에 추가한다.

 

ㅁㅁㅁㅁ/ㅁㅁㅁㅁ/ㅁㅁㅁㅁ/ㅁㅁㅁㅁ/ㅁㅁㅁㅁ

 

인자로 받은 값을 위처럼 끊어서 넣고 다하면 hashcode가 되어야한다.

 

 

 

 

0x21DD9EC를 5로 나눈 후 나머지를 해당 부분에 넣어주면 될 것 같다.

 

 

몫은 위의 값이고 나머지로 4가 있는 걸 확인할 수 있다.

6C5 CEC8을 4번 붙이고 5번째에는 6C5 CECC를 붙이면 해결되는 걸 볼 수 잇다.

 

 

처음에는 몫만 고려해서 했더니 해결되지 않아서 나머지를 확인 후 정답을 수정해주니 

문제가 해결되었다!

 

728x90