"포맷스트링 공격"의 두 판 사이의 차이
잔글 |
|||
1번째 줄: | 1번째 줄: | ||
− | ''' | + | '''포맷스트링 공격'''<!--포맷 스트링 공격-->(Format String Attack)이란 포맷스트링과 이것을 사용하는 printf() 함수의 취약점을 이용하여 RET의 위치에 셸 코드의 주소를 읽어 셸을 획득하는 [[해킹]] 공격이다. |
== 개요 == | == 개요 == | ||
− | + | 포맷스트링 공격은 기존에 널리 사용되고 있던 [[버퍼 오버플로]](buffer overflow) 공격 기법에 견줄 만한 강력한 해킹 기법이다. 이 해킹 기법이 발표되고 나서 그 동안 별 문제 없었던 각종 프로그램들에 대한 취약점이 속속 발표되고 해당 프로그램을 제작했던 회사들은 이 취약점을 해결하기 위해 분주해졌다. | |
== 특징 == | == 특징 == | ||
− | === | + | === 포맷스트링 === |
− | 포맷 스트링( | + | [[포맷스트링]]<!--포맷 스트링-->(format string)이란 일반적으로 사용로부터 입력을 받아들이거나 결과를 출력하기 위하여 사용하는 형식이다. [[C 언어]]에서는 일반적으로 사용하는 기호로 다음과 같은 것들이 있다. |
* %d : 정수형 10진수 상수 | * %d : 정수형 10진수 상수 | ||
* %f : 실수형 상수 | * %f : 실수형 상수 | ||
17번째 줄: | 17번째 줄: | ||
* %n : 쓰인 총 바이트 수 | * %n : 쓰인 총 바이트 수 | ||
− | %n 은 이전까지 입력되었던 | + | %n 은 이전까지 입력되었던 [[문자열]]의 길이(byte) 수 만큼 해당 [[변수]]에 저장시키기 때문에 [[메모리]]의 내용도 변조 가능하다. 이를 이용해 문자열의 길이를 내가 변조시키고 싶은 값의 길이만큼 만든 후 %n을 써주게 되면 메모리상에 내가 원하는 값을 넣을수 있게 된다.<ref>myPPT, 〈[https://mydaum00.tistory.com/entry/%ED%8F%AC%EB%A7%B7-%EC%8A%A4%ED%8A%B8%EB%A7%81 포맷 스티링]〉, 《티스토리》, 2017-07-28</ref> |
{{각주}} | {{각주}} | ||
== 참고자료 == | == 참고자료 == | ||
− | myPPT, 〈[https://mydaum00.tistory.com/entry/%ED%8F%AC%EB%A7%B7-%EC%8A%A4%ED%8A%B8%EB%A7%81 포맷 스티링]〉, 《티스토리》, 2017-07-28 | + | * myPPT, 〈[https://mydaum00.tistory.com/entry/%ED%8F%AC%EB%A7%B7-%EC%8A%A4%ED%8A%B8%EB%A7%81 포맷 스티링]〉, 《티스토리》, 2017-07-28 |
== 같이 보기 == | == 같이 보기 == |
2019년 7월 13일 (토) 02:33 판
포맷스트링 공격(Format String Attack)이란 포맷스트링과 이것을 사용하는 printf() 함수의 취약점을 이용하여 RET의 위치에 셸 코드의 주소를 읽어 셸을 획득하는 해킹 공격이다.
개요
포맷스트링 공격은 기존에 널리 사용되고 있던 버퍼 오버플로(buffer overflow) 공격 기법에 견줄 만한 강력한 해킹 기법이다. 이 해킹 기법이 발표되고 나서 그 동안 별 문제 없었던 각종 프로그램들에 대한 취약점이 속속 발표되고 해당 프로그램을 제작했던 회사들은 이 취약점을 해결하기 위해 분주해졌다.
특징
포맷스트링
포맷스트링(format string)이란 일반적으로 사용로부터 입력을 받아들이거나 결과를 출력하기 위하여 사용하는 형식이다. C 언어에서는 일반적으로 사용하는 기호로 다음과 같은 것들이 있다.
- %d : 정수형 10진수 상수
- %f : 실수형 상수
- %lf : 실수형 상수
- %c : 문자값
- %s : 문자 스트링
- %u : 양의 정수(10진수)
- %o : 양의 정수(8진수)
- %x : 양의 정수(16진수)
- %n : 쓰인 총 바이트 수
%n 은 이전까지 입력되었던 문자열의 길이(byte) 수 만큼 해당 변수에 저장시키기 때문에 메모리의 내용도 변조 가능하다. 이를 이용해 문자열의 길이를 내가 변조시키고 싶은 값의 길이만큼 만든 후 %n을 써주게 되면 메모리상에 내가 원하는 값을 넣을수 있게 된다.[1]
각주
참고자료
- myPPT, 〈포맷 스티링〉, 《티스토리》, 2017-07-28
같이 보기