제일 먼저 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"'`
풀렸닿ㅎㅎ
'포너블 > 워게임_LOB' 카테고리의 다른 글
LOB 문제풀기(Succubus => Nightmare ) (0) | 2020.05.26 |
---|---|
LOB 문제풀기(Assassin => Zombie_Assassin) (0) | 2020.05.25 |
LOB 문제풀기(Giant => Assassin) (0) | 2020.05.24 |
LOB 문제풀기(Bugbear => Giants) (0) | 2020.05.24 |
LOB 문제풀기(Golem => Darkknight) (0) | 2020.05.23 |