728x90
반응형
코드
코드의 동작을 살펴보면 인자를 검사하고, 인자값을 strcpy로 buffer에 복사한다. 이전 문제인 gremlin과 동일하지만, buffer의 사이즈가 256이 아닌 16이다. 즉, 이 문제는 argv[1]에 buffer의 값보다 넘치는 값을 입력하여 buffer over flow를 발생 시키는 것인데, 그 때의 buffer 가 매우 작은 경우를 해결하고자 하는 문제이다.
공격
취약한점을 찾고 buffer over flow임을 알았으니 공격을 시작한다.
buffer가 16byte이기 때문에, 당연히 RTL 로 공격을 시도한다.
1. 떨어져 있는 거리 구하기
RET, EBP 까지 쓰레기 값으로 채우기 위해 떨어져있는 거리를 구하도록 한다.
어셈 코드에서 dummy는 16, SFP 인 4를 더해야 한다.
2. system 주소 구하기
(이전 문제와 동일) gdb를 활용하여 system 함수의 주소를 구한다.
3. /bin/sh 주소 구하기
(이전 문제와 동일) 미리 작성해 둔 sh 프로그램을 이용하여 /bin/sh의 주소를 구한다.
4. Payload 작성
[16Byte Dummy] + [4Byte SFP] + [System] + [4Byte Dummy] + [/bin/sh] 와 같이 작성 하면 된다.
결과
쉘 획득
728x90
반응형
'system' 카테고리의 다른 글
[LOB] darkelf (0) | 2016.09.27 |
---|---|
[LOB] wolfman (0) | 2016.09.27 |
[LOB] orc (0) | 2016.09.27 |
[LOB] goblin (1) | 2016.09.27 |
[LOB] gremlin (0) | 2016.09.27 |
댓글