본문 바로가기
system

[LOB] cobolt

by MOVE🔥 2016. 9. 27.
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

댓글