귀여운 애벌레들이 있는 이 문제는 collision 문제이다.
문제내용은 오늘 아빠가 md5 해쉬 충동에 대해서 알려줬다는 스토리다.
일단 그건 대충 넘어가고.........
먼저 ssh로 col@pwnable.kr -p2222에 접속을 해보자.
password : guest로 접속하면 다음과 같은 모습이다.
ls -l로 무슨 파일이 있는지 확인했다. 여기는 col, col.c, flag파일이 있다.
먼저 col을 실행한 결과 read 방식으로 실행되는걸 알수있다.(read의 예시: ./col 1234)
예상한것 처럼 당연히 flag파일은 permission denied 오류가 난다.
그리고 col의 read 방식이 궁금해서 aaaa를 넣었는데 20bytes를 입력해야한다고 한다.
그래서 바로 aaaabbbbccccddddeeee를(20바이트) 입력했는데 wrong이라고 뜬다.
위는 col.c를 cat명령으로 실행한 모습이다.
res에 ip[i]를 5번 더해서 할당시켰다.
그러므로 0x21dd09ec를 5로 나눠주면 된다.
위는 파이썬으로 계산한것이다.
먼저 0x21dd09ec를 5로 나눠 주었더니 0x6c5cec8이라고 나온다.
그런데 이 부분을 10진수로 계산하니 소수로 나왔다. 즉 5로 나누어 떨어지지 않은 것이다.
나머지를 구해보니 나머지는 4였다.
그래서 0x6c5cec8*5+4를 넣어서 풀면 될것 같았는데 생각해보니 col은 20bytes여야해서 0x6c5cec8*5+4를 넣으면 오류가 날것이었다.
그래서 20bytes로 어떻게 채울지 고민하다가 0x6c5cec8*5+0x6c5cec8+0x4를 하면 20bytes가 된다는 걸 알게되었다.
난 깔끔한게 좋아서 0x6c5cec8+0x4를 미리 계산해서 0x6c5cecc라는 값을 얻었다.
결국 위의 계산식을 col의 read를 넣으면 다음과 같은 스크립트가 나온다.
flag를 보고 싶으면 밑에 flag칸 드래그 하면된다.
./col $(python -c 'print("\xc8\xce\xc5\x06"*4+"\xcc\xce\xc5\x06")')
flag: daddy! I just managed to create a hash collision :)
'워게임' 카테고리의 다른 글
HackCTF-1번, 2번, 3번, 4번(Web) Writeup (1) | 2021.01.23 |
---|---|
여러가지 해킹 교육 플랫폼들과 워게임을 포함한 사이트 모음 (0) | 2020.12.30 |
[xcz.kr] Prob1 : End of image 문제풀이 (0) | 2020.11.22 |
[pwnable.kr] 3번 문제 - bof 문제 풀이 (0) | 2020.11.22 |
[pwnable.kr] 1번 문제 - fd 문제 풀이 (0) | 2020.11.07 |