아무래도 예제 따라하기식으로 공부하다 보니 문제가 뭔지 알아도 어떻게 고쳐야할지를 모르겠네요..ㅠㅠ
ㅅㅅㅅ님 그럼 저 포맷 스트링 공격은 방법이없는건가요..
4234234(211.225)
2015-12-04 17:35
추천 0
댓글 11
다른 게시글
-
인증이고 나발이고 필요없으니 나 언급하지마. [2]codesafer(codesafer) | 15.12.04추천 0
-
원래 대학갤은 대학비하함..??ㅠㅠ [4]ㅂㄷㅈㄱ(211.253) | 15.12.04추천 0
-
내가 1중for 정렬알고리즘을 짠거같다... [9]검고91(blcat91) | 15.12.04추천 0
-
ㅅㅅㅅ님 포맷 스트링 상황이랑 코드입니다 [6]11212(211.225) | 15.12.04추천 0
-
내가 n번째 소수를 구하는 알고리즘을 짠거같다.. [4]검고91(blcat91) | 15.12.04추천 0
-
세 가지 비밀 중, 한가지의 근거 공개 [7]codesafer(codesafer) | 15.12.04추천 0
-
ㅅㅅㅅ같이 열정 넘치고 재능있는 아해들은 납치 감금해서라도 옆에 두고싶다장소삼(175.120) | 15.12.04추천 0
-
서울과기대 컴공이면 컴공이라고 자랑할정도됨?? [3]qwer(211.253) | 15.12.04추천 0
-
퇴근할때 보니하니 보면 존나 한심하겠지? [5]lT♡담배(vitamin2011) | 15.12.04추천 0
-
戰(싸울 전) 자 풀이 재미있어 하는 거 같아서 하나 더. [10]ㅅㅅㅅ(178.162) | 15.12.04추천 0
보통 Return Address 있는 곳에 %n 하는 게 아니라, Old SFP 쪽을 건드리지. 그래서 caller 함수 마지막에 스택 프레임 정리하는 epilog 코드에서 mov esp, ebp 코드에 의해 stack pointer 값이 조작됨.
근데 이런 이유로 main 함수에서는 FSB(Format String Bug) 공격이 불가능하지. main 함수에서 리턴되면 바로 exit 함수에 의해 프로세스가 종료되니깐.
혹여 지역 변수에 함수 포인터 값이 있으면 모를까.
근데 재미있게도 패킹된 실행 파일은 코드 섹션이 writable해서 패킹된 실행 파일을 타깃으로 할 경우에는 return address에도 %n 공격을 하기도 한다.
근데 FSB는 이제 통하는 프로그램이 거의 없으니 이론적으로만 이해를 하고 자세히는 몰라도 돼. 가장 최근에 FSB 먹히는 프로그램을 본 게 구시절 네이버 카페 채팅 프로그램임.
리눅스 구버전에서 실습중입니다 shell코드를 삽입시켜 관리자 권한 뺃는게 목표구요 ㅠ
네이버 카페 채팅 프로그램에 대해 좀 더 자세히 설명을 하자면, 그 프로그램은 채팅 내용에서 % 문자가 있으면 내부적으로 %%로 변환해서 보내는데, 이를 강제로 변환하지 않고 보내면 %d %x 같은 게 다 먹혔다. 즉 sprintf 계열 함수에 %s가 아니라 막 바로 문자열을 집어넣은 거지. 한 때 이 버그를 이용해서 채팅하던 사람들 카페 채팅 프로그램 오류 보고 뜨면서 팅기게 하는 이른바 "테러"라는 기법이 유행했다. "테러기"라는 것이 만들어지고, 후킹이나 프로그램 수정, 혹은 커스텀 채팅 프로그램 개발을 통해 FSB를 막는 "방어기"라는 것도 만들어졌지.
그러면 새로 소스를 코딩해보겠슴다 ㅠ
내가 네이버 카페 채팅 2.0 개발한 사람임 ^^ㅋ
올 ㅋ 혹시 다른코드 하나 올려드릴테니 봐주실수있나요 ㅠ
%n 실습은, 이것만 해도 충분해. int myVar; printf("1234%n", &myVar;); printf("\\n%d\\n", myVar); 이 개념만 알아먹으면 되지 굳이 깊게 들어갈 필요는 없어. 이제 통하는 프로그램이 없거든.