2017-04-02 7 views
1

NX가 활성화 된 상태에서 printf 형식의 문자열이 vulnability를 64 비트 시스템에서 악용하는 방법은 무엇입니까?포맷 문자열 공격 - x64에서 쉘로 점프

이 코드 예제에서 쉘을 얻으려면 어떻게해야합니까? 그것은 반환 - 투 - libc의 공격으로 가지고 있지만, 어디 점프 (어느 곳 코드에는 execve(/bin/bash... 없음)

void f(char *buf) { 
    printf(buf); 
    exit(0); 
} 

int main() { 
    char buf[1024]; 
    scanf("%1024s", buf); 
    f(buf); 
    return 0; 
} 

는 그 때문에 NX 생각하고 명백한 장소의 부족은 이동?

exit의 GOT 항목을 덮어 쓰면 임의의 위치로 이동할 수 있습니다 (예 : execve 또는 system). 레지스터에 적절한 인수를 설정하는 방법은 무엇입니까? ROP 체인에 대한 바이너리 검색 및 거기 점프?

또는 다른 방법으로 셸을 만들 수 있습니까?

+0

https://www.owasp.org/index.php/Format_string_attack –

답변

0

당신이 말했던 것 중에서 요즘 대부분의 printf 함수는 형식 문자열을 사용하는 %n 마커를 지원하지 않으므로 공격 기법이 죽었습니다.

오늘의 장면에서는 잘 이해할 수 없을 수도 있습니다. 따라서 이것이 형식 문자열 익스플로잇에 대한 연습이나 깃발 유형의 캡처가 아니라면, 나는 당신이 최신의 착취 기술에 집중할 것을 제안합니다.