일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 네트워크관리사2급
- slack space
- ZIP 파일구조
- disk
- vinetto
- memory
- 포렌식
- 디지털포렌식 with CTF
- N0Named
- 윈도우 프로세스
- Multimeida
- blkls
- 생활코딩 html
- 생활코딩
- Multimedia
- 슬퍼유
- network
- 윈도우 프로세스 종류
- 2022시작
- ftz
- 정보처리기사 필기 합격
- 24시간의 전사
- html
- CTF-D
- Window process
- 디지털포렌식
- 는 하지마...
- pythonchallenge
- 실기
- 네트워크 보안
- Today
- Total
ssoL2 TISTORY
[FTZ] LEVEL13 풀이 본문
level13 / have no clue
hint를 봅시다.
인자는 1개 이상이고, 그 인자를 bof하는 문제인 것 같다.
하지만 i 변수가 변하지 않는 조건으로 bof 해야 하는 문제이다. i를 침범하면 kill 시스템콜로 프로세스가 죽는다.
gdb로 i 변수와 buf 배열 사이의 간격을 찾아봅시다.
strcpy의 인자인 buf는 ebp-1048 위치에 있으며
if는 cmp로 ebp-12에 있는 값과 0x1234567과 비교하므로 i는 ebp-12에 위치한다.
따라서 ebp-1048는 buf 위치고 ebp-12는 i 위치이므로 구조는 아래와 같다.
buf랑 dummy 두 개에는 NOP으로 채우고 i는 그대로 0x1234567로 변조하지 않게 한 뒤에
level 11, level12에서 풀었던 방법인 RTL을 사용하면 풀릴 것이다.
참고로 i 변수는 long type이므로 4 bytes이다.
ldd, nm, strings 명령어를 통해 최종적으로 system 함수 주소와 /bin/sh 주소를 얻었다.
(=> 자세한 내용은 level11에서 다룸)
최종적으로 NOP*(1024+12) + 0x1234567 + NOP*8 + NOP*4(ebp) + system주소 + NOP*4(system RET) + /bin/sh주소 구조가 완성되었다. 쉘이 등장하고 level14 권한을 획득했다. 해결완료!
(각 주소는 리틀인디안 형식으로 작성해야하며, 해당 문제는 argv[1] 인자를 받는 것이므로 인자 payload 형식을 갖춤)
'challenge > pwn' 카테고리의 다른 글
[FTZ] LEVEL15 풀이 (0) | 2021.02.01 |
---|---|
[FTZ] LEVEL 14 풀이 (0) | 2021.02.01 |
[FTZ] LEVEL12 풀이 (0) | 2021.02.01 |
[FTZ] LEVEL 11 완벽분석 (1) | 2021.02.01 |
[FTZ] LEVEL 10 풀이 (0) | 2021.01.29 |