2번 문제를 풀어보자.
1번 fd 와 마찬가지로 ls하면 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 획득
'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 |