일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 정보보안
- 파이썬
- 신경망
- BOF
- 보안
- 알고리즘
- 머신러닝
- 활성화함수파이썬
- 딥러닝
- 신경망구현
- 스트림암호
- 8086CPU레지스터
- 파이썬신경망
- 달고나bof
- 항등함수
- 신경망 학습
- 버퍼오버플로우
- FTZlevel10
- 인공지능
- 백준
- c언어
- C언어 알고리즘
- 소프트맥스함수
- 밑바닥부터시작하는딥러닝
- C언어알고리즘
- 백준알고리즘
- 신경망파이썬
- BOJ
- C알고리즘
- 딥러닝파이썬
- Today
- Total
HeeJ's
collision :: pwnable.kr 본문
두 번째 문제인 collision에 접속
실습 환경 : VMware Workstation / KaliLinux 2021.3
이번에도 저번 fd 문제처럼 col 실행파일, c파일과 flag를 확인할 수 있다.
바로 cat 명령어를 통해 col.c를 읽어보았다.
코드를 읽어보니 일단, 인자는 20bytes여야 한다.
그리고 check_password()함수를 통해 hashcode와 같은 값을 출력하게 되면 flag를 얻을 수 있다.
check_password 함수에서 int형 포인터로 변환했기 때문에 4bytes씩 5번 접근한다는 걸 확인할 수 있다.
그렇다면 hashcode를 5로 나누어 5번 20bytes로 늘려 입력해준다면 flag를 얻을 수 있다.
21DD 09EC를 5로 나누면 6C5 CEC8이다.
하지만, 6C5 CEC8을 5번 곱하면 21DD 09E8로 4가 부족하다.
그렇다면 6C5CEC8을 4번 넣어주고, 6C5CEC8에서 4를 더한 6C5CECC를 넣어주면 된다.
그리고 Little Endian 방식을 사용하기 때문에, 이를 전부 적용해서
"\xC8\xCE\xC5\x06"*4+"\xCC\xCE\xC5\x06"
혹은
"\xC8\xCE\xC5\x06\xC8\xCE\xC5\x06\xC8\xCE\xC5\x06\xC8\xCE\xC5\x06\xCC\xCE\xC5\x06"
라고 아무리 넣어보아도 20bytes로 값을 넣으라고 한다.
이 부분에서 막혀 찾아 보았더니,
프로그램에서 입력값으로 받으면 char로 인식하기 때문에 파이썬을 이용하여 16진수로 값을 전달하여야 한다고 한다.
위와 같이 값을 넣고 flag를 획득할 수 있었다.
'<CTF> > <pwnable.kr>' 카테고리의 다른 글
fd :: pwnable.kr (0) | 2021.09.21 |
---|