본문 바로가기

WARGAME/pwnable.kr [system]

[Toddler's Bottle] 2번 collision

collision

2번 문제를 풀어보자.

 

ls

1번 fd 와 마찬가지로 ls하면 col.c 파일이 보인다. 

col.c 를 확인해본다.

col.c

살펴보면 hashcode인 0x21DD09EC 와 길이가 20byte인 입력 인자가 같으면 flag 가 출력될 것으로 보인다.

 

check_password 함수를 살펴보면 char포인터를 int 포인터로 변환,

for 문은 5번 반복 (4바이트씩 끊어 res에 추가)하는 것을 볼 수 있다.

 

따라서 계산기를 이용해 계산해보면 0x21DD09EC / 5 = 0x6c5cec8 ,

나머지 확인을 위해 다시*5 하면 0x21DD09E8로, 0x4 부족 -> 마지막에 +4 필요

 

*주의: char형 이int형으로 변환될 때에는 리틀 엔디언 형식으로 변환

 

6c5cec8 * 4 + 6c5cecc

-> \xc8\xce\xc5\x06 * 4+ \xcc\xce\c5\x06 입력

 

./col $(python -c “print ‘\xc8\xce\xc5\x06’*4 + ‘\xcc\xce\c5\x06’)

 

flag

flag 획득

'WARGAME > pwnable.kr [system]' 카테고리의 다른 글

[Toddler's Bottle] 6번 random  (0) 2019.11.28
[Toddler's Bottle] 9번 mistake  (0) 2019.11.27
[Toddler's Bottle] 4번 flag  (0) 2019.11.19
[Toddler's Bottle] 3번 bof  (0) 2019.11.19
[Toddler's Bottle] 1번 fd  (0) 2019.11.14