-
[Toddler's Bottle] 2번.[collision]$ 시스템 해킹 $/pwnable.kr 2018. 11. 29. 17:00
이번에 풀어볼 문제는 pwnable.kr의 2번문제인 [collision] 문제 입니다.
(* 사정상 이번에는 cmd를 이용해서 문제를 풀겠습니다. )
MD5 해시 라는 말이 보이네요
ssh를 통해서 한번 문제로 들어가 보겠습니다.
ls -l 명령어를 통해 무슨 파일이 있는지 확인해 보겠습니다.
col, col.c , flag가 있네요
flag는 접근 불가능 하고 col.c를 읽어 봐야 할거 같네요.
Hash code 가 16진수로 되어있네요. 대충 코드를 살펴 보니 argc는 2보다 커 야하고 길이는 20이어야 합니다.
Hashcode 16진수를 10진수로 변환해 보겠습니다.
0x21DD09EC -> 568134124
Check_password함수를 보면 입력 받은 p의 주소 값을 포인터형 변수 ip에 집어 넣는데 그 ip를 res라는 변수에 하나씩 넣는다.
그렇게 반환된 값이 0x21DD09EC가 되야 하기 때문에 입력해야 하는 값은 0x21DD09EC를 5번 나눠서 더한 형태를 입력해 줘야 한다.
for문으로 5번 돌기 때문에 Hash code를 5로 나누어 보니까 딱 나누어 떨어지지 않더라고요 나머지 4가 남더라고요
113626824 * 4 + 113626828 = 0x21DD09EC 16진수로 다시 바꿔보면
6c5cec8 * 4 + 6c5cecc = 0x21DD09EC 가 됩니다.
답이 6c5cec8 * 4 + 6c5cecc 이거인 거 같네요
하지만 20byte가 아니더라고요…
리틀 엔디안 // 빅 엔디안 이라는 게 있는데 메모리 구조와 관련이 있습니다. 따로 공부 하실 분은 찾아서 공부해보시면 될 거 같아요.
리틀 엔디안은 16진수를 거꾸로 적습니다. 위와 같이
Flag는 daddy! I just managed to create a hash collision :) 입니다.
'$ 시스템 해킹 $ > pwnable.kr' 카테고리의 다른 글
[Toddler's Bottle] 5번.[passcode] (0) 2018.12.02 [Toddler's Bottle] 3번.[bof] (0) 2018.12.01 [Toddler's Bottle] 4번.[flag] (0) 2018.11.30 [Toddler's Bottle] 1번.[fd] (0) 2018.11.29