티스토리 뷰
앞에서 설명드린 개념을 이해하셨다면 이제 이 문제를 혼자서도 해결하실 수 있을 것입니다.
그래도... 풀이는 해야하니...
소스코드는 (1)에서 보셨을테니 gdb로 바로 분석하면서 가보죠 !
main 함수의 leave; ret 부분과 problem_child 함수의 leave; ret 부분에 브레이크포인트를 걸어줍니다.
그리고 run `python -c 'print "B"*4 + "A"*36 + "\x40"'` 으로 실행해주세요.
앞의 두 부분은 problem_child 함수의 leave; ret 부분인데요. (1)에서 해드렸던 대로 분석해보세요.(아마 제가 (1)에서 언급했던 것들에 대해서 알 수 있으실 겁니다.)
아무튼 전 main 함수의 leave 전에 멈춰있습니다. leave 를 수행하기 전에 스택의 상황과 수행 후의 상황을 비교해보겠습니다.
수행 전입니다. 0x42424242 앞에 0xbffffb04가 있죠? 원래 정상적으로(ebp의 값을 침범하지 않는다면) leave가 수행된다면 ebp의 값은 0xbffffb04가 되어야 할 겁니다.
하지만, 저희는 마지막 값을 \x40 으로 바꿔서 전달했기 때문에 leave 과정 중에,
mov esp, ebp; pop ebp -> 에서 esp의 값이 0xbffffb40으로 바뀌기 때문에 pop 수행 시 위의 빨간 네모칸에 있는 2로 바뀌고 esp는 pop으로 인해 4가 증가하는 것입니다.
이후에는 뻔하죠 ? ret가 수행되면 esp의 값에 들어있는 주소로 점프해서 그 주소에 있는 것을 수행합니다.
예상했던 대로 수행되죠 ? 그리고 ret는 pop eip; jmp eip 를 수행하기 때문에 esp의 값이 4만큼 증가되어 있습니다.(나중에 다시 쓸 일이 있습니다. ret를 수행하면 esp 값이 증가한다는 것만 알아두세요.)
그렇다면 이것을 어떻게 공격해야할까요 ?
프로그램의 수행 과정을 대략 적어보면,
ebp 조작 -> esp 에 ebp+4 값이 들어감 -> esp 값 안에 있는 주소를 수행.
입니다. 바로 공격해보겠습니다.
공격성공했습니다.
저 같은 경우 원본 파일을 복사해놓고(이름 길이 똑같아야합니다.), dumpcode.h로 주소를 구한 후에 공격을 수행합니다. 그렇기 때문에 한 번에 공격에 성공하는 것이죠 !
왜 전달하는 인자의 앞 4 바이트가 0xbffffac8이고 ebp의 마지막 바이트를 \xc0 으로 바꾸는지 직접해보세요 ~
P.S. 이미 다 말씀드린 것이고 해본 것입니다. 특히, 프로그램의 수행 과정 ~ 부분에 있는 것을 잘 보시면 됩니다.
'WarGame > LOB(Redhat_6.2) - 完' 카테고리의 다른 글
[LOB] bugbear -> giant 문제 풀이 (3) | 2014.02.01 |
---|---|
[LOB] darkknight -> bugbear 문제 풀이 (0) | 2014.02.01 |
[LOB] golem -> darkknight 문제 풀이(1) (0) | 2014.02.01 |
[LOB] skeleton -> golem 문제 풀이 (2) | 2014.02.01 |
[LOB] vampire -> skeleton 문제 풀이 (0) | 2014.01.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- .get()
- compliance
- Cloud
- web
- security
- opensource
- fleet manager
- 우주와컴퓨터
- terraform
- AWS #CIS
- cloudsecurity
- defaulttheme
- REACT
- 계정정보저장
- platform
- scp
- IAM
- 4xx
- 2xx
- findinglatestversion
- JavaScript
- aws
- teplate
- conftest policy
- temlate
- ControlTower
- ViaAWSService
- stateType
- CIS
- steampipe
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함