상세 컨텐츠

본문 제목

[LOB] level 15: giant -> assassin

SYSTEM HACKING/LOB Redhat

by koharin 2019. 6. 26. 12:33

본문

728x90
반응형

 

 

no stack, no RTL: stack overflow도 아니고, RTL도 아니라는 의미같다.

buffer[40]: buffer의 크기가 40byte이므로, 스택은 buffer(40) + sfp(4) + ret(4)의 구조를 가질 것이다.

if(argc < 2): 실행파일에 같이 줘야 하는 인자의 개수가 2개 이상

if(argv[1][47] == ‘\xbf’), if(argv[1][47] == ‘\x40’): bufferargv[1][0] ~ argv[1][39], sfpargv[1][40] ~ argv[1][43], retargv[1][44] ~ argv[1][47]이므로 ret 영역의 주소가 ‘\xbf’ 또는 ‘\x40’으로 시작하면 안 된다. 스택 영역의 주소와 libc 영역의 주소를 사용할 수 없는 것이다.

memset(buffer, 0, 44): buffersfp 영역을 초기화해버린다. 다행히 아직 ret영역에 주소를 넣어서 사용할 수 있다.

 

다행히 지난 번 RTL을 처음 할 때, execl() 때문에 구글링 한 것으로 ret sled를 알게 되어서 ret 영역의 주소는 ‘\xbf’‘\x40’으로 시작하지 않으므로 사용할 수 있을 것 같다.

 

<RET sled 기법>

-return addressRET의 주소를 넣는 기법이다.

-RET은 리턴하면서 esp가 이전 함수의 ebp를 가리키게 되는데, ebp 주소에 원하는 주소를 넣으면 된다.

 

 

 

RET이 프롤로그의 역과정을 하기 전에

RETaddress: 0x804851e

Little endian 방식으로 작성할 때는 “\x1e\x85\x04\x08”

 

#system의 실행 후 주소

 

 

RETsfp에 넣은 address = system address: 0x40058ae0

Little endian => \xe0\x8a\x05\x40

 

#”/bin/sh”의 주소

 

 

#payload

지난 번에는 RETsfp 부분에(이전 함수의 ebp) shellcode의 주소, 실질적으로는 NOP의 주소를 넣었지만, shellcode 사용이 번거로워서 그냥 간접적으로 RTL 기법을 사용하도록 하겠다. Return addressRET의 주소만 넣으면 그 이후부터의 payloadnop sledRTL을 사용하는 것과 비슷하다고 생각되기 때문에.

Buffer + sfpmemset 함수로 인해 0으로 초기화되지만 상관없으니 dummy로 채운다.

Return address에는 구한 RET의 주소를 넣는다.

그럼 buffer 구조에서 return address가 리턴 시 return address에 담긴 주소를 ebp가 가리키게 되어 RET의 주소를 가리킨다. 다시 이동한 RET에 의한 구조가 생기는데, RETreturn address에는 system의 주소를 넣는다. 그럼 리턴 시 return address에 담긴 주소로 이동하여 system의 주소로 이동한다. System에 의한 구조도

 

 

 

이 구조를 가지고 있으므로 현재 system에 의한 스택의 구조가 위와 같은데, 원하는 것은 system 함수가 “/bin/sh”를 실행하길 바라는 것이므로 systemargument“/bin/sh”의 주소를 넣어야 한다. 이전에 구했듯이 ebp + 8 위치에서 system이 인자(argument)를 처리한다. Systemreturn address에는 이제 넣을 것이 없으므로 dummy로 채운다.

그렇다면 payload는 다음과 같이 구성된다.

Buffer + sfp(44) + return addr(&RET) + RET의 이전 함수의 base pointer(&system) + return address(dummy) + argument(&“/bin/sh”)

 

임시 디렉터리에서 복사한 파일의 심볼릭 링크 파일로 성공했으니 원본파일에서 해보자.

 

 

성공!

“pushing me away”

728x90
반응형

관련글 더보기