[pwnable.kr] 2번_collision 풀이
포너블 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를 붙이면 해결되는 걸 볼 수 잇다.
처음에는 몫만 고려해서 했더니 해결되지 않아서 나머지를 확인 후 정답을 수정해주니
문제가 해결되었다!