fake ebp를 사용하면 되는 문제로 buf에는 쉘코드를 적고 ebp에는 buf의 시작주소를 적는다.
마지막으로 ret에 leave 주소를 적어주면 다음과 같이 동작하게 된다.
AT&T 기준으로 1. mov ebp, esp 2. pop ebp 두가지 기계어 연산을 하게되는데,
1번에서 현재 ebp를 esp에 넣어 esp의 위치를 ebp가 가리키는 곳으로 옮긴다.
low
[buf] <-현재 esp
[sfp]
[ret]
high
그 뒤 pop ebp를 하고 그 다음의 코드를 읽는다.
low
[buf] -> buf만 확대 -> buf = [AAAABBBBCCCCDDDDEEEE....] 이 때 pop ebp를 하였으므로 B의 첫 글자가 esp위치이다.
[sfp]
[ret]
high
따라서, buf의 4바이트 뒤에 쉘코드를 담고 ebp에는 buf의 시작주소를, ret에는 leave주소를 써주면 공격할 수 있다.
공격 코드
'WARGAME > hackerschool ftz,lob' 카테고리의 다른 글
[BOF 원정대] bugbear-> giant (level 14) (0) | 2014.08.03 |
---|---|
[BOF 원정대] giant -> assassin(level 15) (0) | 2014.08.03 |
[BOF 원정대] zombie_assassin-> succubus(level 17) (0) | 2014.08.03 |
[BOF 원정대] succubus-> nightmare (level 18) (0) | 2014.08.03 |
[BOF 원정대] nightmare -> xavius (level 19) (0) | 2014.07.31 |