티스토리 뷰
이번에는 조금(?) 참신한 문제입니다.
이번에는 Fake EBP 가 안먹히도록 ebp 주소를 저장해놨다가 복구시키네요...
이것은 execl+3 을 사용하지 못하도록 하려는 제작자의 배려(?)입니다...
사실 전 첫 번째 문제도 RET Sled 로 풀었는데... 두 번째 문제라서 살짝 당황했었습니다.(execl+3 은 이후에 알게된...)
아무튼 RET Sled는 Nop Sled 와 비슷한 원리입니다.
ret이 수행되면, pop eip; jmp eip 의 동작이 수행됩니다. 그렇게 되면 esp의 값이 4 바이트만큼 증가하게 되죠 ?
| ebp(4) | ret(ret) | new ret | -> ret에 ret을 넣어주면 그 뒤의 값이 ret으로 바뀌는 원리를 이용하는 것입니다.
이게 통하는 이유는 스택의 모든 영역이 랜덤인 것이 아니라서 그런것이구요.(모든 영역을 랜덤화시키기엔 가용성이...)
보시면, 같은 곳이 존재한다는 것을 볼 수 있습니다. 물론 이외에도 많은 부분이 똑같은 값을 갖고 있습니다.
이제 저 부분을 인자로 받도록 RET Sled 를 주게되면 아래와 같이 공격코드가 구성됩니다.
| buf(268) | ebp(4) | ret(ret) | new ret(ret) | new ret(execl) | 랜덤값 | 고정인자 |
예상대로 되는지 공격해보겠습니다.
실제 프로그램에서 수행한 장면입니다. 물론 ret의 값이 바뀌었고 공격은 execl이 아닌 system으로 수행했습니다.
그 이유는 system으로 수행되는 인자의 값이 무엇인가 보고 그것을 execl의 인자로 사용하기 위함입니다.
(한 마디로 execl은 에러를 안 뱉어내니까 system으로 에러를 보고 링크를 걸기 위함입니다.)
3a20 사이에 있는 값들이 저희가 링크시켜줘야 하는 값입니다. 휴... 너무 기네요.
직접 처보기는 힘들테니, hexdump를 이용해서 추출해봅시다 !
간편하죠 ? 이걸 드래그해서 복사한 뒤에 붙여넣으면 됩니다 !
근데 공격이 안되네요... 오랜만에 풀어서 그런가 왜 안되지는 몰랐었습니다 ㅋㅋㅋㅋ...
exec* 계열의 함수는 ""로 감싸줘야 합니다. \x20 이 공백이라서 exec* 계열은 \x00 으로 인식을 하기때문이죠.
because of you... 당신 때문이야 !
'WarGame > LOB(Fedora_3) - 完' 카테고리의 다른 글
[LOB] evil_wizard -> dark_stone 문제 풀이 (0) | 2014.02.21 |
---|---|
[LOB] hell_fire -> evil_wizard 문제 풀이 (0) | 2014.02.20 |
[LOB] dark_eyes -> hell_fire 문제 풀이 (5) | 2014.02.20 |
[LOB] gate -> iron_golem 문제 풀이 (0) | 2014.02.07 |
[LOB] 문제 풀이를 위한 로컬 서버 구축 (0) | 2014.02.07 |
- Total
- Today
- Yesterday
- 우주와컴퓨터
- IAM
- steampipe
- cloudsecurity
- stateType
- web
- teplate
- terraform
- scp
- 2xx
- compliance
- JavaScript
- defaulttheme
- security
- ViaAWSService
- Cloud
- ControlTower
- conftest policy
- 계정정보저장
- platform
- CIS
- 4xx
- findinglatestversion
- aws
- temlate
- REACT
- AWS #CIS
- fleet manager
- opensource
- .get()
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |