티스토리 뷰
이번에는 스택도 RTL도 이용할 수 없습니다.
소스코드를 한 번 보시면,
리턴주소의 맨 처음 바이트에 스택과 공유라이브러리 영역에 대한 것을 원천차단해놨군요...
하지만 ! argv[1]와 환경변수 모두를 차단하지는 않았습니다. 즉, 두 개 모두 사용해야 풀 수 있는 것 같습니다.
문제 12번을 제대로 이해하시고 직접 해보셨다면 풀면서 확 ! 떠오르는게 있으실 수도 있습니다만...
바로 설명드리겠습니다.
leave; ret 에 대한 내용은 모두 아신다고 가정하고 ret의 동작에 대해서만 다시 한 번 살펴보죠.
ret: pop eip; jmp eip -> 와 같이 동작한다고 설명해드렸습니다. 또한, pop을 하므로 esp의 값이 4 바이트만큼 증가한다고 설명했었구요.
뭔가 아이디어가 떠오르시지 않으시나요 ? 그렇습니다. ret에 ret을 한 번 더 넣어주면... 원래 ret 값의 4 바이트 뒤의 부분을 사용할 수 있게 됩니다.
leave와 ret에 브레이크포인트를 걸고 수행 중인 장면입니다. ret에 브레이크포인트가 걸린 상태로 멈춰있으며, esp 값은 0xbffffadc이고 ret이 수행되면 0x41414141 주소로 점프합니다.
그런데 ret을 0x41414141이 아닌 Text 영역에 있는 ret으로 한 번 더 점프하면 어떻게 될까요 ?
gdb의 set명령으로 ret 값을 다시 ret로 뛰게한 후에 continue를 하니 esp의 값이 4 바이트만큼 증가했습니다.
이제 다시 한 번 실행하면 원래의 ret 뒤의 값인 0x00000000을 실행하려고 할 것입니다.
예상대로입니다. 그럼 이제 뒷 부분에 쉘코드를 넣고 점프해봅시다 !
많이 하시는 실수 중에 ret 뒤에 쉘코드를 넣으시는 분들 있으신데 ret 뒤에는 점프 할 주소를 넣어야합니다 !
도중에 ret의 주소가 바뀌어서 gdb로 재확인하고 공격하였습니다 ~ 성공 !
'WarGame > LOB(Redhat_6.2) - 完' 카테고리의 다른 글
[LOB] zombie_assassin -> succubus 문제 풀이 (0) | 2014.02.01 |
---|---|
[LOB] assassin -> zombie_assassin 문제 풀이 (0) | 2014.02.01 |
[LOB] bugbear -> giant 문제 풀이 (3) | 2014.02.01 |
[LOB] darkknight -> bugbear 문제 풀이 (0) | 2014.02.01 |
[LOB] golem -> darkknight 문제 풀이(2) (0) | 2014.02.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- opensource
- cloudsecurity
- REACT
- conftest policy
- Cloud
- scp
- IAM
- security
- steampipe
- fleet manager
- platform
- 2xx
- aws
- terraform
- 우주와컴퓨터
- AWS #CIS
- temlate
- JavaScript
- compliance
- .get()
- 계정정보저장
- ControlTower
- CIS
- defaulttheme
- 4xx
- teplate
- ViaAWSService
- web
- stateType
- findinglatestversion
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함