Pwnable.kr

문제 분석 pwnable.kr을 풀기 전에 문제에 있는 힌트를 괜히 주는게 아니라고 생각이 든다. 위 힌트에서 bash에 대한 shocking news가 있다고 한다. 따라서 문제 이름인 shellshock, bashshock에 대해 검색을 해보았다. Shellshock(CVE-2014-6271) Shelllshock 취약점은 GNU bash shell에서 환경변수(env)를 통해 공격자가 원격으로 명령어를 실행할 수 있는 취약점이다. 내가 이해한 바로는 해당 취약점은 특정 bash 버전에서 발생한다. 새로운 bash 쉘을 떨어뜨리는 기능을 수행하거나, 쉘을 생성하는 링크가 있을 때 사용 가능하다. 환경변수의 함수 선언을 통해 의도치 않은 동작을 수행시킨다. 환경 변수의 함수 선언 쉘에서 export 명..
ARM을 공부하라고 한다. 먼저 leg.c와 leg.asm 파일을 다운받았다. 소스코드 분석 leg.c #include #include int key1(){ asm("mov r3, pc\n"); } int key2(){ asm( "push {r6}\n" "add r6, pc, $1\n" "bx r6\n" ".code 16\n" "mov r3, pc\n" "add r3, $0x4\n" "push {r3}\n" "pop {pc}\n" ".code 32\n" "pop {r6}\n" ); } int key3(){ asm("mov r3, lr\n"); } int main(){ int key=0; printf("Daddy has very strong arm! : "); scanf("%d", &key); if( (k..
소스코드 기능분석 먼저 main 함수에서 putenv함수로 환경변수를 설정한다. 이때 PATH가 /thankyouverymuch로 바뀌게 된다. 이후 filter 함수에 cmd1 파일을 실행할 때 넘겨준 인자가 넘어가게 되고, strstr에 의해 필터링을 하게된다. 인자에 flag, sh, tmp가 없었다면 system(넘겨준인자)를 실행한다. 익스플로잇 먼저 putenv로 path를 없앤다. printenv로 환경변수를 확인해보면 PATH가 이렇게 설정되어있다. /usr/bin이 기본 path이기에 cat과 같은 명령어를 cat만 쳐도 실행이 되는 것이다. 하지만 path가 사라졌으니 절대 경로를 사용해야한다. 즉 인자로 /bin/원하는 명령 을 넘겨주어야 하는 것이다. 우리가 하고싶은건 flag를 읽..
세종대학교 S.S.G / WHS 2기
'Pwnable.kr' 태그의 글 목록