티스토리 뷰
이번 레벨 부터는 Buffer Overflow 부분이 시작됩니다 !
일단 매번 하는 것 있죠. 고고싱...
좀 길죠...? 하하... 일단 코드 자체만 해석하는 것은 되실거라 믿어 의심치 않습니다... 만 ! 그래도 한 번 해석해보죠.
10바이트를 할당받은 두 개의 변수가 buf2, buf 순서로 선언이 되어있구요.
"It can be overflow : " 를 출력한 뒤 바로 입력을 받고 있습니다. 입력을 완료하면, buf2 변수와 "go" 문자열을 비교해서 맞으면 Level10의 쉘을 띄워줍니다.
그런데 한 가지 이상한 것이 있네요...? buf에 입력을 하는데 왜 buf2에서 "go"를 비교하고 있을까요 ?? 아무것도 모르는 상태에서는 당황할 수 밖에 없습니다.
gdb를 이용해서 한 번 살펴보죠 !
hint의 코드를 복사 붙여넣기로 컴파일 한 후에 gdb로 disassemble한 장면입니다.
맨 처음에 스택프레임을 구성한 후 40(0x28)Bytes 를 할당하는 것을 볼 수 있습니다. 이는 fgets에서 40바이트를 최대로 받고 있기 때문입니다.
또한 코드를 보다보면,
각각의 지역변수는 Dummy 값을 포함하여 16바이트 씩을 할당받고 있다는 것을 알 수 있습니다.
이를 토대로 문제를 풀어보면,
16글자를 입력 후에 "go" 를 입력하니 문제가 풀렸습니다 !
음.... 한 번 메모리 구조나 이런 것들을 설명하는 코너도 필요할 것 같군요...
'WarGame > FTZ' 카테고리의 다른 글
[FTZ] Level11 문제 풀이 (0) | 2013.12.31 |
---|---|
[FTZ] Level10 문제 풀이 (0) | 2013.12.29 |
[FTZ] Level8 문제 풀이 (0) | 2013.12.27 |
[FTZ] Level7 문제 풀이 (0) | 2013.12.26 |
[FTZ] Level6 문제 풀이 (0) | 2013.12.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 계정정보저장
- 4xx
- REACT
- opensource
- 우주와컴퓨터
- compliance
- conftest policy
- .get()
- findinglatestversion
- temlate
- defaulttheme
- 2xx
- teplate
- JavaScript
- stateType
- AWS #CIS
- Cloud
- steampipe
- ViaAWSService
- web
- ControlTower
- platform
- CIS
- IAM
- terraform
- aws
- security
- fleet manager
- cloudsecurity
- scp
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함