SECURITY/System | Wargame

[Pwnable.kr] Collision

2022. 10. 4. 12:36

​

다음 문제는 collision !

​

​

​

ls 명령어로 디렉토리 내에 있는 파일을 먼저 살펴보았다.

내 권한은 col 이므로 col 파일은 실행 / col.c 파일은 읽기 / flag는 아무것도 할 수 없다.

먼저 읽을 수 있는 파일을 파악해야 실행 파일을 활용할 수 있을 것 같아 col.c 파일을 읽어보았다.

​

​

​

unsigned long 형의 hashcode을 정의하고 16진수 21DD09EC를 대입했다.

unsigned long 형의 check_password 함수를 정의했다.

함수는 인자를 int 형으로 변환하여 4byte 씩 5번 읽고, res에 추가한다.

res를 return 하고 함수가 종료된다.

​

main 함수로 넘어와보자.

argc가 2 미만일 경우 즉 인자가 없을 경우에 fd 문제와 동일하게 문장을 출력, 종료한다.

argv[1]의 길이가 20byte가 아닐 경우에 "passcode length should be 20 bytes\n"를 출력, 종료한다.

hashcode와 check_password(argv[1]))가 일치할 경우 flag를 cat하고, 종료한다.

즉, 함수를 거친 res 값과 hashcode가 일치해야 한다.

다를 경우에는 else에서 "wrong passcode.\n"을 출력, 종료한다.

​

​

​

입력되는 인자는 크기는 20byte여야 하며 check_password를 지나서

나온 값이 hashcode의 값인 0x21DD09EC와 일치해야 한다.

​

check_password는 20byte를 4byte 씩 쪼개서 5개를 모두 합친다.

0x21DD09EC / 5 = 0x6C5CEC8이지만

0x6C5CEC8 * 5 = 0x21DD09E8 이므로 0x21DD09EC와 일치하지 않고 0x04만큼 작다.

그러므로 다섯 조각 중 마지막 조각에만 0x04를 더하여 페이로드를 작성하면 "0x6C5CEC8 * 4 + 0x6C5CECC"이 된다.

​

[ 페이로드 ]

0x6C5CEC8 * 4 + 0x6C5CECC

​

​

​

​

Collision의 flag는 "daddy! I just managed to create a hash collision :)"

​

'SECURITY/System | Wargame' 카테고리의 다른 글
  • [Pwnable.kr] Passcode
  • [Pwnable.kr] Bof
  • [Pwnable.kr] fd
  • [Hackerschool] FTZ level 20
yuujoeng
yuujoeng
IT and Information Security
yuujoeng
알감자는 공부중
yuujoeng
전체
오늘
어제
  • 🎁 (201)
    • SECURITY (80)
      • 관리보안 (27)
      • System (10)
      • System | Wargame (30)
      • Android (9)
      • Reversing (3)
      • AWS (1)
    • BLOCKCHAIN (45)
      • BlockChain (22)
      • Ethereum (23)
    • PROGRAMMING (30)
      • Web (16)
      • Android (6)
      • Spring (8)
    • IT (0)
      • Article (40)
      • RaspberryPi (5)

블로그 메뉴

  • HOME
  • TIKKLE

인기 글

hELLO · Designed By 정상우.
yuujoeng
[Pwnable.kr] Collision
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.