본문 바로가기

포너블/워게임_LOB

LOB 문제풀기(Darkknight => Bugbear )

 

 

제일 먼저 ls 명령어를 통해 파일을 본다.

 

bugbear.c 파일을 cat 명령어로 살펴본다.

다음처럼 argc는 2 이상이어야 하고 버퍼크기는 40이며, argv[1][47]=\xbf가 되서는 안된다. 그말은 지금 내가 알고 있는 지식으로는 페이로드안이나 스택안에서 쉘코드를 실행시킬수 없다. 그러므로 RTL 기법을 이용한다.

페이로드를 작성하면 40크기(BUFFER) + 4크기(SFP) + 4크기(SYSTEM 함수 주소) + 4크기(DUMMY) + 4크기("/bin/sh" 인자의 주소)

 

먼저 gdb를 이용해 system 함수의 주소를 알아내자!!

다음처럼 (1) 브레이크포인트를 걸어준다. (2) run을 실행해준다. (3) print system을 통해 system 함수의 주소를 구한다. 

system 함수의 주소(=0x40058ae0)

다음은 system함수의 인자값으로 쓰일 "/bin/sh"의 주소값을 구한다.

 

다음 과정을 통해 시스템함수에 인자로 쓰일 "/bin/sh"의 주소인 400fbff9을 찾아냈다.

위의 사진은 exit 명령어의 주소를 알아내었다.

페이로드를 `python -c 'print "a"*44 + "\xe0\x8a\x05\x40" + "\xe0\x91\03\x40" + "\xf9\xbf\x0f\x40"'`

 

 

풀렸닿ㅎㅎ