일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 풀스택
- 대나무숲
- TensorFlow
- 코로나19
- 머신러닝
- 웹개발
- 일상
- 특별전형
- 중3
- 해킹방어과
- 인공지능
- 워게임
- 우분투
- 등교개학
- 플러터
- WebHacking
- Flutter
- 디미고
- 디미고입학
- pwnable.kr
- 딥러닝
- apollo
- 이비즈니스과
- 웹프로그래밍과
- 시스템해킹
- graphql
- coursera
- 디미고특별전형
- 디지털컨텐츠과
- 학생
- Today
- Total
꿈이 너무 많은 한 대학생의 공간
Pwnable.kr - collision 문제풀이 본문
오늘은 다시 pwnable 문제풀이 포스팅입니다.
어제 치과를 갔다왔는데 5개나 썩았다네요... 평소에 단것을 안좋아하긴 한데 점심은 공부때문에 깜빡하고 저녁은 학원때문에 깜빡하다 보니 하루에 1~2번밖에 양치를 못하다 보니 5개나 썩었나 보네요... 심지어 하나는 신경치료까지 필요해서 거의 80만원 가까이 내게 생겼습니다... 치과검진 1년에 한번씩은 하시고 양치 꼭 하세요 큰일납니다 ㅠㅠ
이제 본론으로 들어가도록 하죠.
ssh col@pwnable.kr -p2222 명령어를 사용해 워게임 환경으로 접속해 봅시다.
환경에는 col / col.c / flag 가 존재하네요.
flag은 언제나 열리지 않을테니 col.c를 분석해볼게요.
대충 실행 인자값을 4바이트 단위(argv[1]을 int* 단위로 받으므로)로 나눈 후 한 바이트당 5번 반복해 res에 더하고 res를 반환, hashcode와 일치하는지 확인한 뒤 일치한다면 flag를 읽어오는 소스코드입니다.
여기서 해쉬코드는 0x21DD09EC 이므로 이를 5로 나눠봅시다. (5번 분할해 더하므로)
소수점이 있는걸로 보아 나누어떨어지지는 않네요. 소수점 부분을 지우고 5번 곱해보겠습니다.
0x21DD09E8 이 나왔네요. 본래 값인 0x21DD09EC - 0x21DD09E8 = 4 이므로 맨 마지막 값에는 4를 더해 입력해야겠네요.
그러면 입력해야하는값은 0x06C5CEC8 이 4번 반복되고 마지막은 0x06C5CECC 가 되는 문자열을 대입해야겠네요.
다만 여기서 리틀이디언 방식을 사용하니 반대로 된 0xC8CEC506 4번 0xCCCEC506 이 되는 값이 대입되어야 합니다.
하지만 이를 4번 모두 하나하나 쓸 수 없어서 방법을 찾아보니 python 관련 명령어를 터미널에서 사용해 사용할 수 있답니다.
위와 같이 python -c 를 사용하고 ' ' 내에 명령어를 입력한다면 그 명령어에 맞는 값을 반환합니다.
즉, 아래와 같이 리턴한다면 리틀이디언 형식으로 바꾼 대입값이 실행인자로 넘겨져 hashcode 와 실행인자값이 같아집니다.
flag : daddy! I just managed to create a hash collision :)
'정보보안 공부 > Pwnable.kr' 카테고리의 다른 글
Pwnable.kr - bof 문제풀이 (0) | 2020.06.09 |
---|---|
Pwnable.kr - fd 문제풀이 (0) | 2020.06.02 |