system
[LOB] wolfman
MOVE🔥
2016. 9. 27. 10:55
728x90
반응형
코드
코드의 동작을 살펴보면, 이전 문제인 orc문제와 거의 유사하다. 하지만, 마지막에 buffer를 0으로 초기화하기 때문에 buffer에 shellcode 를 적재하는 buffer over flow는 불가능하다. 따라서 입력할 수 있는 인자값에 shellcode를 적재하여 이 주소를 RET가 가르키게 하여 공격을 수행해야 한다.
공격
취약한점을 찾고 buffer over flow임을 알았고, 우회해야 되는 조건들을 알았으니 공격을 시작한다.
입력하는 인자에 shellcode를 갖이 입력하고, RET를 이 주소를 가르키게 한다.
1. 떨어져 있는 거리 구하기
RET, EBP 까지 쓰레기 값으로 채우기 위해 떨어져있는 거리를 구하도록 한다.
buffer의 크기가 40이고, 어셈 코드를 통해 확인해도 40이다. 이후 거리 계산은 SFP 인 4를 더해야 한다.
2. 인자 값 주소 확인하기
인자값에 nop와 shellcode를 넣고 RET 주소에 이 시작 주소를 넣어 쉘코드가 실행되게 한다.
argv[0] = 0xbffffc41
argv[1] = 0xbffffc4d
3. Payload 작성
[40Byte Buffer] + [4Byte SFP] + [RET] 이기 때문에
[40Byte Buffer] + [4Byte SFP] + [RET(0xbf....)] + [nop] + [shellcode] 와 같이 작성 하면 된다.
결과
쉘 획득
728x90
반응형