일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- CTF-D
- 윈도우 프로세스
- Multimeida
- html
- 정보처리기사 필기 합격
- ZIP 파일구조
- 생활코딩
- 네트워크 보안
- vinetto
- ftz
- 슬퍼유
- 24시간의 전사
- 윈도우 프로세스 종류
- 실기
- blkls
- N0Named
- 디지털포렌식
- memory
- Window process
- 포렌식
- disk
- 2022시작
- 생활코딩 html
- 디지털포렌식 with CTF
- network
- slack space
- Multimedia
- 는 하지마...
- pythonchallenge
- 네트워크관리사2급
Archives
- Today
- Total
ssoL2 TISTORY
[FTZ] LEVEL15 풀이 본문
level15 / guess what
level14와 같은 문젠데 하나 다른 점은 check이 포인터 변수라는 점!
buf에 bof일으켜서 check을 0xdeadbeef가 담긴 주소를 가리키게 만들면 된다. 현재 해야할 것은 0xdeadbeef 주소 찾기.
gdb로 살펴보면 fgets의 인자로 사용하는 buf는 ebp-56에 위치하고, cmp로 비교하는 check 포인터 변수는 ebp-16에 위치한다. 포인터 변수는 그냥 변수랑 비슷한데 다른 점은 가리킬 주소를 담고 있다는 것이다. 따라서 0xdeadbeef가 아닌 0xdeadbeef를 "담고 있는" 주소를 담아야하므로 해당 주소를 찾아야한다. 0xdeadbeef와 변수를 비교하는데, 메모리에 직접 로드되야하므로 어딘가엔 있을 것이다. 그래서 직접 활용되는 main+32 근처를 살펴보려한다.
다행히 바로 발견했다. dead와 beef가 쪼개져서 나와서 이쁘게 모아보자..
짜잔! 고로 0xdeadbeef를 담고 있는 주소는 0x80484b2가 되겠다! 다 구했으니 bof 일으키자.
fgets 함수로 stdin payload로 작성했고, level14와 똑같은 구성에 다른 점은 check에 0xdeadbeef 주소가 들어간다는 점.
해결 완료~
'challenge > pwn' 카테고리의 다른 글
[FTZ] LEVEL 17 풀이 (0) | 2021.02.23 |
---|---|
[FTZ] LEVEL 16 풀이 (0) | 2021.02.01 |
[FTZ] LEVEL 14 풀이 (0) | 2021.02.01 |
[FTZ] LEVEL13 풀이 (0) | 2021.02.01 |
[FTZ] LEVEL12 풀이 (0) | 2021.02.01 |
Comments