본문 바로가기

format string bug

5. Format String Attack (FSB) Shayete 입니다. 5번째 강의는 포맷스트링 버그에 대해 알아보도록 하겠습니다. 포맷스트링버그는 개발자가 printf()함수 구현 시, 해킹 공격을 고려하지 않고 개발하여 생긴 보안 취약점입니다. printf()를 "printf(buf)" 와 같은 형태로 사용했을 때 출력할 buf의 값이 포맷스트링이라면 buf 값을 문자로 취급하는게 아닌, 서식문자로 취급하여 취약점이 일어날 수 있습니다. 위의 그림에서 보이듯이 fgets() 로 buf에 서식문자를 집어넣고 그걸 printf() 로 출력했을 때 출력될 buf 배열에 서식문자가 있을 경우, buf배열을 가리키는 주소의 다음 4바이트 위치를 참조하여 그 서식문자의 기능대로 출력합니다. 이게 무슨말일까요. printf나 scanf에 쓰이는 서식문자는 위와.. 더보기
[2015 Plaid CTF] pwnable_EBP 160p 대학원 준비하느라 많이 바쁜 관계로 가볍게 한문제 풀고 포스팅합니다. 2015. 4. 18일 오전 3시인가 0시부터 시작했던 ppp팀 주관의 2015 plaid ctf , pwnable 문제 ebp 입니다. 전형적인 포맷스트링 버그 문제입니다. 바이너리는 매우 단순합니다. 제가 문제풀면서 적당히 정리한 text 라 지금 response와 buf 배열이 함수 내에 존재하는데원래 바이너리에 buf[1024]와 response[1024]는 전역변수로 선언되어 있습니다. 이 바이너리를 간단하게 요약하면 #include char buf[1024];char response[1024]; void main(){while(1){fgets(buf, sizeof(buf), stdin);echo();}} void echo().. 더보기