system
[LOB] gremlin
MOVE🔥
2016. 9. 27. 10:15
728x90
반응형
코드
코드의 동작을 살펴보면 인자가 없으면 error 를 출력하고 인자를 입력한경우 strcpy 를 이용하여 인자값을 buffer 에 복사한다. 이때 strcpy 함수에 취약점이 발생하게된다. argv[1] 에 buffer 의 값보다 넘치는 값을 입력하면 buffer over flow 가 일어나기 때문이다.
공격
취약한점을 찾고 buffer over flow임을 알았으니 공격을 시작한다.
buffer가 256 byte이므로 buffer에 쉘코드를 직접 입력하는 방법을 이용해도 상관없지만 RTL을 주로 이용하는 것을 좋아하기 때문에 그냥 RTL로 공격 하려 한다.
1. 떨어져 있는 거리 구하기
RET, EBP 까지 쓰레기 값으로 채우기 위해 떨어져있는 거리를 구하도록 한다.
어셈 코드에서 dummy는 256이고, +4된 260이 떨어져 있는 거리이다.
2. system 주소 구하기
gdb를 활용하여 system 함수의 주소를 구한다.
3. /bin/sh 주소 구하기
미리 작성해 둔 sh 프로그램을 이용하여 /bin/sh의 주소를 구한다.
4. Payload 작성
[256Byte Dummy] + [4Byte SFP] + [System] + [4Byte Dummy] + [/bin/sh] 와 같이 작성 하면 된다.
결과
쉘 획득
728x90
반응형